안녕하세요 초보 SE 입니다.
회사에서 MariaDB를 이용해서 서비스 하고 있는데
이중화도 안되어있고 백업도 없어서 매우 불안한 상태 입니다.
mysqldump 명령을 이옿해 full 덤프를 받았는데 덤프파일이 약 60G, 압축 후 8G 정도 용량이 나옵니다.
준비된 백업 서버에 리스토어 시도했더니 에러없이 들어가긴 하는데 약 10시간 실행했는데 로그상으로 1/3 정도 입력된 것으로 나와서 백업을 해도 문제가 발생 했을 때 활용은 불가능하다는 결론을 내렸습니다.
다른 방법으로 데이터 영역을 하드카피 하는 것으로 테스트 중인데
Active 서버에서 scp 명령으로 data , logs 디렉토리를 StandBy 로 복사 한 후
systemctl start mariadb 로 실행하면
한참 후에
Job for mariadb.service failed becouse a timeout was exceeded. See "systemctl status mariadb.service" and "journalctl -xe" for details.
라고 떨어지면서 실패하고 journalctl -xe 해보면
8월 13 14:37:47 localhost.localdomain systemd[1]: mariadb.service start operation timed out. Terminating.
8월 13 14:39:17 localhost.localdomain systemd[1]: mariadb.service stop-final-sigterm timed out. Skipping SIGKILL. Entering failed mode.
8월 13 14:39:17 localhost.localdomain systemd[1]: Failed to start MariaDB 10.3.10 database server.
-- Subject: Unit mariadb.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mariadb.service has failed.
--
-- The result is failed.
8월 13 14:39:17 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state.
8월 13 14:39:17 localhost.localdomain systemd[1]: mariadb.service failed.
이렇게 만 나옵니다.
프로세스를 확인해보면 /usr/sbin/mysqld 는 떠있지만 접속하면
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.sock' (2)
메시지 출력 하면서 접속이 안되고
systemctl status mariadb 해보면
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mariadb.service.d
└─migrated-from-my.cnf-settings.conf
Active: failed (Result: timeout) since 목 2020-08-13 14:39:17 KST; 26min ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 29887 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
Process: 29883 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Main PID: 29971
CGroup: /system.slice/mariadb.service
└─29971 /usr/sbin/mysqld
8월 13 14:36:16 localhost.localdomain systemd[1]: Starting MariaDB 10.3.10 database server...
8월 13 14:36:17 localhost.localdomain mysqld[29971]: 2020-08-13 14:36:17 0 [Note] /usr/sbin/mysqld (mysqld 10.3.10-MariaDB-log) starting as process 29971 ...
8월 13 14:37:47 localhost.localdomain systemd[1]: mariadb.service start operation timed out. Terminating.
8월 13 14:39:17 localhost.localdomain systemd[1]: mariadb.service stop-final-sigterm timed out. Skipping SIGKILL. Entering failed mode.
8월 13 14:39:17 localhost.localdomain systemd[1]: Failed to start MariaDB 10.3.10 database server.
8월 13 14:39:17 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state.
8월 13 14:39:17 localhost.localdomain systemd[1]: mariadb.service failed.
systemctl stop mariadb 명령으로 중지가 안되고 kill -9 로 강제 종료해야 하는 상황입니다.
질문 1 : 운영중 DB HOT 백업시 mysql 데이터영역과 logs 영역을 물리적으로 복사 했다가 장애시 그대로 덮어 쓰는 방식이 타당한지? 불가능 하다면 좋은 백업, 이중화 방식 추천 해주시면 감사합니다.
질문 2 : 물리적으로 복사 해서 다른 서버로 옮겨서 start 하는 경우 위 설명처럼 별다른 메시지가 없이 time out 떨어지는 경우 원인을 파악 할 수 있는 방법이 무었인지 궁금합니다.
Active 서버와 Test서버의 my.cnf 설정은 동일(테스트 서버에서는 사양문제로 성능 관련 부분만 주석처리함)
Active 서버 단독으로 mariadb start / stop 문제없고
Test 서버에서도 자체에서 가지고 있던 data, logs 파일들을 덮어쓰면 문제 없이 start / stop 됩니다.
몇일째 하고 있는데 잘 안되니 답답합니다.
이제 maria-backup 이라는 백업 툴을 이용해 테스트 해보려고 하고 있습니다.
갈길이 너무 머네요... 내용이 너무 장황하지만 고수님들의 조언 부탁드립니다. |