"MariaDB 레플리케이션 비정상 복구"의 두 판 사이의 차이

(새 문서: ==개요== ;MySQL 리플리케이션 복구 ;MariaDB 리플리케이션 복구 ;MariaDB 리플리케이션 비정상 복구 ==확인== <source lang='console'> root@slave1:~# mysql -u...)
 
3번째 줄: 3번째 줄:
;MariaDB 리플리케이션 복구
;MariaDB 리플리케이션 복구
;MariaDB 리플리케이션 비정상 복구
;MariaDB 리플리케이션 비정상 복구
* [[MariaDB 리플리케이션 설정]]과 같이 마스터 1대, 슬레이브 2대가 있는데
* 슬레이브 2대 모두 리플리케이션에 문제가 생긴 상황


==확인==
==확인==

2017년 9월 26일 (화) 23:40 판

1 개요

MySQL 리플리케이션 복구
MariaDB 리플리케이션 복구
MariaDB 리플리케이션 비정상 복구

2 확인

root@slave1:~# mysql -u아이디 -p패스워드 -e 'SHOW SLAVE STATUS \G' | egrep "Master_Log_Pos|Running|IO_Err|SQL_Err"
          Read_Master_Log_Pos: 38125518
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
          Exec_Master_Log_Pos: 29972602
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 1062
               Last_SQL_Error: Error 'Duplicate entry '4273' for key 'PRIMARY'' on query. Default database: 'mediawiki'. Query: 'INSERT /* JobQueueDB::doBatchPush Johnjeong bot */  INTO `nt_job` (job_cmd,job_namespace,job_title,job_params,job_id,job_timestamp,job_sha1,job_random) VALUES ... (생략)
→ 마스터는 38125518까지 가있는데, 슬레이브1은 29972602 지점에서 오류 발생
root@slave2:~# mysql -u아이디 -p패스워드 -e 'SHOW SLAVE STATUS \G' | egrep "Master_Log_Pos|Running|IO_Err|SQL_Err"
          Read_Master_Log_Pos: 38127230
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
          Exec_Master_Log_Pos: 32908348
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 1062
               Last_SQL_Error: Error 'Duplicate entry '4832' for key 'PRIMARY'' on query. Default database: 'jmnote'. Query: 'INSERT /* JobQueueDB::doBatchPush Johnjeong bot */  INTO `nt_job` (job_cmd,job_namespace,job_title,job_params,job_id,job_timestamp,job_sha1,job_random) ... (생략)
→ 마스터는 38127230까지 가있는데, 슬레이브2는 32908348 지점에서 오류 발생

3 조치

대략 MariaDB 리플리케이션 설정 문서 후반부의 슬레이브 설정부분을 다시 적용해주면 된다.

  • 슬레이브 중지 - 마스터 재설정 - 슬레이브 시작
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='마스터주소', MASTER_USER='리플리케이션계정', MASTER_PASSWORD='패스워드', MASTER_PORT=3306, MASTER_LOG_FILE='마스터로그파일', MASTER_LOG_POS=마스터로그포지션, MASTER_CONNECT_RETRY=10"
START SLAVE;

4 확인 2

  • 아래와 같이 순식간에 정상화되었다.
root@slave1:~# mysql -u아이디 -p패스워드 -e 'SHOW SLAVE STATUS \G' | egrep "Master_Log_Pos|Running|IO_Err|SQL_Err"
          Read_Master_Log_Pos: 38144310
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
          Exec_Master_Log_Pos: 38144310
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error:

5 의견

  • 마스터와 슬레이브 사이에 통신이 불안정해서 그런가?
  • MASTER_CONNECT_RETRY를 늘려보면 어떨까?

6 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}