CentOS 7, MariaDB 10.0 에서 MariaDB 10.5 Upgrade, MariaDB Directory 변경

두 대의 CentOS 7에서 같은 버전의 MariaDB 10.0을 MariaDB 10.5로 업데이트 해 보았다.  차이가 있다면 오래된 구형의 PC에 설치된 서비스 서버는 CentOS 7.6이며 mariadb도 mysql 5.3 버전부터 MariaDB10.0 버전을 거쳐 10.5로 업그레이드, 마이그레인션 작업을 진행해 왔었고 비교적 신형의 PC는 CentOS 7.9버전에 MariaDB10.0 버전에서 바로 10.5로 업그레이드 했다. 두 PC 모두 100G 정도의 DB가 설치되어 있었고 동일한 프로그램으로 동일하게 조회가 되도록 서비스가 복제되어 있는 상태에서 업그레이드가 진행되었다. 단, 데이터 디렉토리는 두 PC 모두 별도의 디렉토리에 설정되어 있었다.

  1.  DB Backup

   모든 DB 작업 전에는 Backup이 필수적이다. 당연히 Full Backup을 진행해야 하고 mysqldump 를 이용하여 모든 데이터베이스를 백업하였다.

root:/root> mysql -u root -p --all-databases | gzip -c > mysql_20210405.sql.gz
Enter Password : xxxxxxxxxx <Enter>

2. MariaDB 10.0 삭제

현재 사용중인 MariaDB 10.0은 삭제를 해 준다.

root:/> systemctl stop mysqld
root:/> yum remove mysql-server MariaDB-server MariaDB-client

3. MariaDB 10.5 설치

/etc/yum.repos.d/MariaDB10.repo 파일의 내용(10.0 -> 10.5로 )을 수정해 준다.

# MariaDB 10.0 CentOS repository list - created 2014-10-13 13:04 UTC 
# http://mariadb.org/mariadb/repositories/ 
 
[mariadb]  
name=MariaDB
#(10.0을 10.5로 고친다) 
baseurl=http://yum.mariadb.org/10.5/centos7-amd64 
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB 
gpgcheck=1

파일 수정 후 프로그램을 설치한다.

root:/> yum install MariaDB-server MariaDB-client

4. 서비스 시작

프로그램 설치가 끝났으면 MariaDB 서비스를 시작한다.

root:/> systemctl start mariadb

정상적으로 접속이 되는 지 mysql 로 접속하여 확인한다.

5. 데이터 디렉토리 변경

프로그램 설치가 끝난 다음 mysql/mariadb의 home directory인 /var/lib/mysql을 변경해야 할 경우에는 Default Directory 에 있는 파일을 복사한다.

root:/> rsync -av /var/lib/mysql/* /data/mysql 
(rsync는 cp명령에 비해 소유자, link, permission을 그대로 복사해 주므로 편리하다. 만약 rsync가 설치되어 있지 않으면 복사한 다음 owner와 permission을 맞춰 주거나 tar로 묶어서 옮겨 풀어주어야 한다. )

서비스를 시작하기 전에 /etc/my.cnf.d/server.cnf 파일에 다음의 내용을 추가한다.

[server]
datadir=/data/mysql   <- 데이터가 저장될 새로운 디렉토리 
socket=/data/mysql/mysql.sock 
innodb_data_home_dir=/data/mysql

파일 저장 후 mariadb 서비스를 시작한다.

root:/> systemctl start mariadb

이 때, mariadb가 정상적으로 시작하지 못하고 에러가 발생하면 다음의 경우를 확인한다. ( MariaDB 10.5 기준 )

  • 새로 지정한 data /home directory의 소유자(owner)와 권한(permission)을 확인한다. (directory의 소유자는 mysql이어야 하며 directory 내 각 파일의 소유자 모두 mysql로 되어 있어야 하며 read/write 권한을 가져야 한다)
  • selinux로 설정되어 있는 경우 selinux에서 mariadb 관련 directory를 등록해 주어야 한다.
  • selinux가 enable 되어 있지 않음에도 불구하고 계속 permission error가 발생하며 시작되지 않는 경우 /usr/lib/systemd/system/mariadb.service 파일의 다음 항목을 수정하여 저장한다.
ProtectSystem=full -> off 로 변경
ProtectHome=true -> false 로 변경

이 부분은 mariadb 자체적으로 home directory를 /home이나 /root directory 등으로 변경하지 못하도록 막는 역할을 하므로 off와 false로 각각 변경해 주어야 한다.

7. 기타

mariadb의 home directory를 변경한 경우 permission error가 발생할 수 있고 속도가 느려질 수 있으므로 속도가 빠른 ssd에 mysql directory가 있도록 ( /var/lib/mysql은 system directory이므로 ssd를 booting disk로 사용하는 경우 ssd에 위치하게 된다 ) 설정하여 사용하는 것이 performance에 도움이 된다.

부득이하게 data directory를 변경 하는 경우 /var/lib/mysql 의 파일을 복사할 때 데이터 호환성 문제가 발생하는 경우가 있다. 즉, mariadb는 겨우겨우 start가 되었는데 실제 쿼리를 실행할 때 에러가 발생하고 쿼리를 실행하지 못하는 경우가 있다. 이 때는 1번 단계에서 full backup 받아 둔 데이터로 모두 restore하는 것이 가장 시간 낭비를 적게 하는 길이다.

root:/root> gunzip -c mysql_20210405.sql.gz | mysql -pxxxxx -uroot 

CentOS + Apace + ssl로 https설정




운용중인 웹 서비스를 https로 전환하려다가 인증서등록/발급이 유료라 중단하고 있다가 google 등의 정책과 보안, 신리성, 광고 등의 문제로 다시 추진했다.

Let’s Encrypt에서 ssl 인증서를 무료로 발급받고 자동 갱신되게 설정하여 예전과는 비교도 되지않게 쉽게 설정했다

1. https://certbot.eff.org에서 OS와 웹서버 종류를 선택하고 나온 화면 지시대로 한다.

: yum으로 설치할 때 패키지를 찾을 추가 저장소 ( EPEL Repo : Extra Packages for Enterprise Linux Repository)를 추가해준다.

certbot을 yum으로 install 한다. 이 때 설치가 안되거나 패키지를 찾지 못한다고나오면 EPEL repo 추가를 안했거나 잘못한거다.

certbot을 웹서버에 맞게 실행한다 (정확하게는 환경설정을 자동으로 하게 실행하는거다 )

certbot –apache 이런식으로

다음엔 crontab / inittab에 자동 갱신 명령을 등록한다.

0 0,12 * * * root python -c ‘import random; import time; time.sleep(random.random() * 3600)’

이런 식이다. 관리자 또는 root권한으로 등록해야 한다.

2. certbot이 작동하는지 테스트한다. https://www.ssllabs.com/ssltest/ 에서 테스트 하고 본인이 관리하는 사이트를 다 https로 접속해 본다.

특히 vhost로 여러 도메인을 관리해줄 경우 certbot이 각 호스트의 rewriterule을 자동 등록 해주지만 혹시 잘못 설정되는 부분이 없는지 모두 체크해 봐야한다.

노트북에 라즈베리파이(Raspberry PI) 넣기 – 4(끝)

주문한 HDMI 연결 잭이 중간에 분실되었다. ㅠㅠ. 알리익스프레스에 주문한 HDMI 연결 잭이 3달째 도착하지 않았다. ㅠㅠ 배송중 사라져버렸다. ㅜㅜ

불행은 겹쳐서 온다더니, 기다리는 동안 라즈베리파이의 높이를 낮추는 작업을 하다가 보드 출력 부분은 날려 먹어버렸다. 즉, 라즈베리파이 B+보드를 하나 날려먹은 것이다 ㅠㅠ. 처음 시작할 때 참조하였던 라즈베리파이를 슬림하게 하는 작업을 하며 서툰 인두질로 억지로 녹여 내다 콘덴서를 태워먹었어거나 세게 미끄러지면서 작은 부품을 찍어 깨트려 버린 듯 하다. HDMI, RCA 등 여러 출력 장치에 모두 연결 해 보았지만 보드 불만 깜빡이면서 화면은 반응이 없다. 특히 RCA 포트의 납은 녹이기 위해 한참 인두를 대고 있어야 하기 때문에 보드가 엄청난 열을 받은 듯 하다.

<제거 작업 전 Raspberry B+>
<랜 포트와 USB 포트로 높이가 상당하다 1.5 cm 정도 ?>

<제거 작업 후 모습, 실제 상당히 슬림해졌다 >
<지저분한 인두의 슬라이딩 흔적이 보드의 운명을 말해준다 ㅠㅠ >

https://learn.adafruit.com/diet-raspberry-pi/overview 사이트에 있는 바 대로 상당히 위험 부담이 있는 작업이며 숙련된 사람이 아니면 하지 않아야 하는데 너무 간단히 생각해서 보드를 날려 먹었다.
Always mount a scratch monkey. ㅜㅜ

아마 Lan 포트를 떼어 낼때 너무 힘을 주어 인두가 미끄러지면서 작은 컨덴서나 저항 같은 놈을 찍어 깨졌거나, RCA 포트를 녹여 낼때 너무 고온의 인두를 오랫동안 한곳에 대고 있어 다른 칩이 타버린 듯 하다. RCA 포트를 다시 붙여 연결해 봐도 화면이 안나오고 HDMI에 꽂으면 부팅이 안된다.

아쉽지만 여기서 일단락을 해야겠다.

 그동안의 이 정신없던 작업을 정리해보면

  1. 노트북의 케이스와 모니터를 재활용하기로 함
  2. 노트북을 다 뜯고 주문한 만능 (또는 LCD 패널에 적절한 ) ad 보드를 연결함
  3. AD 보드는 별도의 12V 전원을 필요로 하므로 5V USB -> 12V 변환 케이블이 필요해서 구입함.
  4. 만약 모니터 Ad 보드가 firmware 업데이트가 필요한 경우 VGA 잭에 (또는 다른 적절한 연결 방법을 찾아 ) 연결하여 firmware를 업데이트 한다.(firmware 업데이트로 지원 해상도 TTL, LVDS 등을 변경, 지정해 줄 수 있다)
  5. 모니터의 CCFL 백라이트가 나가는 것 쯤은 직접 LED 백라이트로 갈아준다. ( 이 때 LED 전용의 인버터가 반드시 필요하다 )
  6.  ad 보드와 라즈베리파이의 부품이 너무 높으면 보드를 잘 다듬어 납작하게 만들어준다.(필요하면 높은 높이의 컨덴서나 VGA 잭 등은 납을 녹여 분리해서 옆으로 눕히거나 제거해 준다 )
  7. 본체의 기존 부품을 적당히 다 뜯어내고 ad보드와 라즈베리파이를 넣고 케이블 연결 작업을 한다. HDMI 케이블은 너무 길기 때문에 커넥터로 직접 연결한다.
  8. 전원은 휴대용 배터리(2구짜리)를 내부에 넣고 글루건 같은걸로 다 붙여버린다. 휴대용 배터리는 전원 버튼이 있는걸로 쓴다. 이 전원 버튼은 잘 빼서 노트북 전원 스위치에 연결한다.
라즈베리파이와 AD 보드를 연결할 HDMI M/M 커넥터 (배송중 분실됨 -> 2달반만에 도착! )
5V -> 12V 변환 케이블

작업 중 확인 한 바로는 라즈베리파이 B+ 모델은 사용 전력이 낮아서 하나의 충전지에 두개의 보드 (라즈베리파이와 AD 보드)를 모두 꽂아 사용해도 전원이 들어오지만 라즈베리파이 3 B+ 모델과 AD 보드를 같은 충전지에 꽂았더니 모니터가 들어오지 않았고 라즈베리파이도 계속 부팅을 되풀이 하는 듯 했다. 아마 소모 전력이 상대적으로 커서 그런 듯 하다. 라즈베리파이 3B+는 1A를 사용하고 라즈베리파이 3A+는 700mA를 사용한다고 함. 라즈베리파이 B+는 500mA 인듯.

현재 상태는 노트북 모니터만 살아서 외부로 HDMI 케이블을 라즈베리파이 3 B+에 연결하여 임시로 쓰고 있는데 나중에 노트북의 키보드와 터치패드도 USB로 한번 되살려보도록 하겠다.

키보드는 어려울 지 몰라도 터치패드는 대부분 synaptics의 터치패드인데 거의 대부분 ps/2 연결 방식이다. 이는 usb로 직접 연결이 불가능하고 (선은 연결이 되지만 프로토콜이 달라 인식을 못하는 듯 하다. USB 케이블에 강제로 붙여 꽂았더니 호스트 인식 실패라고 나온다. ) 중간에 작은 Arduino 보드를 사용하여 PS/2 입력 신호를 USB 신호로 변경하는 회로가 필요할 듯 하다. 키보드는 자료를 찾아보니 역시 Arduino 보드를 사용해야 하나 완벽한 성공은 힘들고 한 80-90% 정도의 인식이 가능한 듯 하다.

사망한 라즈베리파이 보드를 보며 라즈베리파이 3 B+ 보드도 갈아 넣고 싶은 욕망이 꿈틀거린다.

노트북에 라즈베리파이(Raspberry PI) 넣기 – 3

Compaq Armada M300 노트북의 모니터를 재활용해 보려는 단순한 생각으로 시작한 노트북에 라즈베리파이를 넣는 작업이 꼬여만 가다 모니터의 Firmware 업데이트, 모니터 백라이트 분해/교체를 고비로 60% 정도는 진행된 듯 하다. 

이제 다시 본론으로 돌아가서 노트북을 다 분해 한 상태에서 모니터와 Ad보드를 연결해서 자리 잡는 본격적인 작업을 또 새벽에 진행했다.

 작업하기 전 ad 보드 상태. 정상 작동하는건 수십번 확인했고 LED 인버터 연결도 잘된다.

 부품을 다 뜯어내고 ad 보드를 일단 넣어보려고 했는데…

펜티엄 3 노트북 메인보드. 라즈베리파이보다 낮은 사양이면서 보드는 더 크다

ad 보드의 높이가 일단 높아서 노트북에 들어가질 않는다. ㅠㅠ. 처음부터 눈대중으로 쉽게 안들어갈것 같았는데 실제 넣어보니 높아도 너무 높다. 그래서 라즈베리파이를 슬림화 할때 쓰려고 한 방법을 동원했다. 즉 높이가 좀 높은 부품들은 다 잘라 내기로 한거다.

일단 VGA잭과 AV 잭…먼저 난이도가 살짝 낮은 AV잭.

가장 오른쪽에 있던 AV 잭을 뽑아버렸다. 아랫쪽 납을 인두로 계속 지지며 펜찌로 살살 잡아 당겼다. 작업시간은 20분 가량.

가진 건 인두밖에 없어서 한손으로 펜치로 AV잭 잡고 바닥에 비스듬히 세워 옆으로 누르면서 인두로 바닥쪽 납을 녹였다. 손이 두개밖에 없어서 바닥에 있는 세개의 납을 동시에 녹일 수는 없었고 너무 뜨거워 살짝 녹이면서 기술적(?)으로 내리누르면서 AV잭을 비트는 고난이도 요가 자세로  0.1mm씩 녹이며 뽑았다.

다음은 VGA잭 뽑을 차례…

속이 다 후련하다! VGA 잭 마저 녹여 뽑아버렸다.작업시간은 약 40분 걸렸다. 뒷면은 지저분해졌지만 구멍 15+2개를 하나씩 0.1mm씩 녹여서 비틀어 잡아 뽑았다.

 이제 다 된건가? 하고 노트북에 넣어보니 헉!. 앞쪽 전원부분과 윗쪽에 있는 까만 튜브같은거에 쌓인 놈이 컨덴서 같은데 기대서서 머리로 노트북 커버를 밀고 있다!

역시 전원도…

전원은 15분 정도 걸려 떼 내서 랜 케이블 세가닥으로 연장했다. 합선 될까 걱정되긴 한다. 윗쪽 까만 튜브에 쌓인놈은 반대쪽으로 젖혀버렸다 저것도 보드에 부딪혀 더 이상 젖혀지지 않는다.

 전원부분을 떼서 랜 케이블 세가닥으로 연장해서 달았다. 밖으로 뺄수도 있고 노트북 옆구리에 달수도 있고 길게 빼서 노트북 안에 고정할 수도 있겠다. 까만 듀브에 쌓인 놈은 반대로 젖혔는데도 보드에 옆구리가 걸려 완전히 젖혀지지 않는다. 생각 같아선 확 떼 버리고 싶었지만, 꾹 참고…

뜨거운 열 세례를 받고 보드가 무사한지 확인해 보기 위해 노트북 본체에 ad 보드를 대충 쑤셔 넣고 라즈베리 파이랑 모니터를 연결해 보았다.

헉! 화면이 안나온다!..ㅠㅠ

헉! 화면에 No Signal  싸인이 선명히 나오더니 까맣게 사라진다. 몇번을 모니터만 다시 껐다 켜도 계속 No Signal이다. 가만 보니 이놈이 VGA만 찾는가보다. 근데 난 Ad 보드를 살때 OSD 보드를 안샀다. ㅠㅠ ad board에 연결하는 command 라고 하는 부분. 즉 화면 조정할때 쓰는 버튼 달린 기다란 보드를 안산거다. 그게 있으면 Source 또는 Auto 같은 버튼 한번 눌러줘야 할 듯 한데…한 푼이라도 싼거 찾다가 고생 제대로 한다 ㅠㅠ 난 노트북에는 저 버튼을 누를 일이 없을 줄 알았지…

고민고민하다가 ad board를 꺼내서 뒤집어서 command 버튼의 하단 납땜 부분에 있는 Source 부분과 옆에 있는 Ground (GND)를 살짝 쇼트 시켜봤다. 아무 효과가 없어 몇번 여기 저기 다른 핀과 쇼트를 내는데 화면이 갑자기 퍽 꺼졌다 다시 나타났다.

  우측 아랫쪽에 10개 나란히 있는 핀들이 command와 리모컨을 위한 핀들이란다. 그 중 source와 GND, POWER, MENU 같은 놈들을 몇 번 쇼트 내 줘 봤다.
 화면이 왜 이러지?

 HDMI를 찾더니 화면은 들어왔는데 해상도가 이상하다. 일단 화면 연결한것만도 다행이니 라즈베리파이에 마우스를 슬그머니 끼우고 화면을 껐다 켜서 다시 연결하니 잘 들어온다. 해상도도 1024×768로 성공하고…

화면 들어온김에 몇가지 테스트를 했다. 라즈베리파이에 있는 USB로 ad보드가 작동하는지 라즈베리파이에 Ad 보드 전원을 연결하고 해봤으나 화면이 계속 4-5초 간격으로 살짝 약하게 깜빡이는게 외엔 아무것도 나오지 않았다. 전압은 되나 전력이 약한가 보다. 하긴 라즈베리파이에 연결된 전원이 지금 1A 인데 USB에 전류가 나오면 얼마나 나오겠나…

다음은 휴대용 배터리에 모니터 전원을 연결해 보니 잘 된다. 나온다.

두번째 큰 고비를 넘긴 듯 하다. 이제 마지막 남은 일은 진짜 라즈베리파이를 노트북 본체에 쑤셔 넣는 일만 남았다. 그리고 빨리 주문한 물건이 도착해야 저 길다란 HDMI 케이블을 어떻게 처리하지…

생각해 보니 이런 작업을 하기엔 라즈베리파이 3 A+ 보드가 아주 적격인거 같다. 내가 가진건 라즈베리파이 1 B 라서 랜과 USB 2포트짜리, AV잭, 이어폰 잭 까지 아주 지랄맞은 일들이 남아있다 ㅠㅠ.

RPI 3 A+. 이런게 있어야하는데…  이미지 출처  www.itworld.co.kr

 우리나라엔 아직 팔지도 않는데 작업을 효율을 생각하면 저넘이 딱이다!

노트북에 라즈베리파이(Raspberry PI) 넣기 – 모니터 백라이트 교체

라즈베리파이를 구형 노트북에 넣으다가 일이 점점 커져버렸다. 


 라즈베리파이 때문인지 고물 노트북 때문인지 시작된 작업이 점점 커지다가 하나씩 마무리 되어가는 듯. 하지만 언제 모니터를 쓰레기통에 쳐박을지 몰라 조마조마한 마음으로 계속 진행해 봤다. 가지고 있는 도구는 싸구려 납땜기 하나와 잘라서 쓰는 네트웍 케이블…

집에 가보니 주문한 LED 백라이트 택배가 도착했다. (ad 보드, 12v usb 전원, LVDS 케이블, LED 백라이트세트 … 많이도 샀다.) LED 백라이트는 세트로 주문했다. 백라이트로 쓰는 LED 라인 한줄과 LED용 전용 인버터, 그리고 전원 및 LED 연결 케이블까지. 14,000원에 택배비 포함 2,500원.

친절한 포니아저씨네 사이트에서 주문 못해 미안하긴 하지만 그 사이트에는 품절이라니 주문하고 싶어도 할수 없다. 

튼튼하게 포장되어 왔다 야구방망이 크기 ㅎㅎ
 LED백라이트와 전용 인터버
CCFL인버터. 왼쪽이 CCFL 라이트로 연결되는 부분. 오른쪽이 AD 보드랑 연결하는 6PIN 커넥터

인터넷에 나와 있는 CCFL 백라이트를 LED 백라이트로 바꾸는 방법 글들을 참고로 LED 라인을 길이재서 과감히 잘랐다. 뒤를 보니 제일 마지막 2칸을 제외하고는 3칸씩 선을 그어 표시해두고 있어서 길이가 적당한 선(모니터 아랫쪽에 들어갈꺼니까 대 보고 )에서 니퍼로 잘랐다.

조립은 분해의 역순이니 다시 LCD 패널 아랫쪽에 백라이트 잘 쑤셔 넣어주고 (이 노트북 모델은 패널과 반사판 등을 모두 분해 하지 않고도 아랫쪽 라이트 커버를 뺄 수 있었다. 그런데 접착제가 아직 너무 강해 라이트 커버를 잡아당기다가 힘없는 얇은 라이트 커버가 약간씩 벌어졌다. 그랬더니…)

 강렬한 (!) LED라이트가 조명처럼 비춰지고 있다. LED의 빛이 강한 탓도 있지만 LED를 감싸고 있는 얇은 케이스같은 백라이트 보호 철판이 분해할때 막 잡아 당겨 약간씩 휘어져서 빛이 번지는 듯 하다

빛샘현상이라고 하는거 같던데 아무튼 전원을 넣고 시운전을 해 보니 빛이 번진다. 다시 전원을 빼고 분해해서 철판을 살짝 살짝 눌러줬다. 그리고 집에 있는 양면 테이프로 얇은 LED 선이 뒤틀어지거나 옆으로 돌아가지 않게 다시 철판에 띄엄 띄엄 고정시켜 주고.

중간 중간 노트북에 연결해서 테스트를 해 가면서 다시 나사를 다 죄어 모니터는 살렸다. 노트북이랑 VGA 케이블로 연결하니 잘 나온다. 윈도우 노트북에 연결해서 테스트!

빛 샘 현상이 아직 있지만 철판을 눌러줘서 그런지 좀 줄어든 느낌적인 느낌이랄까

  또 한고비를 넘겼다. 이제 다시 노트북에 라즈베리파이를 넣는 작업으로 고고씽~!