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

 
(같은 사용자의 중간 판 9개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;MySQL 리플리케이션 복구
;MySQL 레플리케이션 복구
;MariaDB 리플리케이션 복구
;MariaDB 레플리케이션 복구
;MariaDB 리플리케이션 비정상 복구
;MariaDB 레플리케이션 비정상 복구
* [[MariaDB 리플리케이션 설정]]과 같이 마스터 1대, 슬레이브 2대가 있는데
* [[MariaDB 레플리케이션 설정]]과 같이 마스터 1대, 슬레이브 2대가 있는데
* 슬레이브 2대 모두 리플리케이션에 문제가 생긴 상황
* 슬레이브 2대 모두 레플리케이션에 문제가 생긴 상황
* ※ MySQL / MariaDB 동일함
* ※ MySQL / MariaDB 동일함


17번째 줄: 17번째 줄:
                 Last_IO_Error:  
                 Last_IO_Error:  
               Last_SQL_Errno: 1062
               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 ... (생략)
               Last_SQL_Error: Error 'Duplicate entry '4273' for key 'PRIMARY'' on query. ... (생략)
</source>
</source>
:→ 마스터는 38125518까지 가있는데, 슬레이브1은 29972602 지점에서 오류 발생
:→ 마스터는 38125518까지 가있는데, 슬레이브1은 29972602 지점에서 오류 발생
29번째 줄: 29번째 줄:
                 Last_IO_Error:  
                 Last_IO_Error:  
               Last_SQL_Errno: 1062
               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) ... (생략)
               Last_SQL_Error: Error 'Duplicate entry '4832' for key 'PRIMARY'' on query. ... (생략)
</source>
</source>
:→ 마스터는 38127230까지 가있는데, 슬레이브2는 32908348 지점에서 오류 발생
:→ 마스터는 38127230까지 가있는데, 슬레이브2는 32908348 지점에서 오류 발생


==조치==
==조치==
대략 '''[[MariaDB 리플리케이션 설정]]''' 문서 후반부의 슬레이브 설정부분을 다시 적용해주면 된다.
대략 '''[[MariaDB 레플리케이션 설정]]''' 문서 후반부의 슬레이브 설정부분을 다시 적용해주면 된다.
* 슬레이브 중지 - 마스터 재설정 - 슬레이브 시작
* 슬레이브 중지 - 마스터 재설정 - 슬레이브 시작
<source lang='mysql'>
<source lang='mysql'>
STOP SLAVE;
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='마스터주소', MASTER_USER='리플리케이션계정', MASTER_PASSWORD='패스워드', MASTER_PORT=3306, MASTER_LOG_FILE='마스터로그파일', MASTER_LOG_POS=마스터로그포지션, MASTER_CONNECT_RETRY=10"
CHANGE MASTER TO MASTER_HOST='마스터주소', MASTER_USER='레플리케이션계정', MASTER_PASSWORD='패스워드', MASTER_PORT=3306, MASTER_LOG_FILE='마스터로그파일', MASTER_LOG_POS=마스터로그포지션, MASTER_CONNECT_RETRY=10"
START SLAVE;
START SLAVE;
</source>
</source>
57번째 줄: 57번째 줄:


==의견==
==의견==
* 마스터와 슬레이브 사이에 통신이 불안정해서 그런가?
* 마스터와 슬레이브 사이에 통신이 불안정해서 그런 것으로 추정됨
* MASTER_CONNECT_RETRY를 늘려보면 어떨까?
* [[MASTER_CONNECT_RETRY]]를 늘려보면 어떨까? 10 → 60으로 변경해봄
* [[Parallel_Mode]]를 바꿔보면 어떨까?
* [[slave-skip-errors]]를 설정하는 방법도 있음


==같이 보기==
==같이 보기==
* [[MariaDB 리플리케이션 설정]]
* [[MariaDB 레플리케이션 상태 확인]]
* [[MariaDB 레플리케이션 설정]]
* [[미디어위키 경고: 데이터베이스가 관리를 위해 잠겨 있습니다.]]
* [[미디어위키 경고: 데이터베이스가 관리를 위해 잠겨 있습니다.]]


[[분류: MariaDB]]
[[분류: MariaDB]]
[[분류: MySQL]]
[[분류: MySQL]]
[[분류: 레플리케이션]]

2019년 1월 1일 (화) 21:02 기준 최신판

1 개요[ | ]

MySQL 레플리케이션 복구
MariaDB 레플리케이션 복구
MariaDB 레플리케이션 비정상 복구
  • MariaDB 레플리케이션 설정과 같이 마스터 1대, 슬레이브 2대가 있는데
  • 슬레이브 2대 모두 레플리케이션에 문제가 생긴 상황
  • ※ MySQL / 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. ... (생략)
→ 마스터는 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. ... (생략)
→ 마스터는 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를 늘려보면 어떨까? 10 → 60으로 변경해봄
  • Parallel_Mode를 바꿔보면 어떨까?
  • slave-skip-errors를 설정하는 방법도 있음

6 같이 보기[ | ]

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