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

잔글 (Jmnote님이 MariaDB 리플리케이션 비정상 복구 문서를 MariaDB 레플리케이션 비정상 복구 문서로 이동했습니다)
 
1번째 줄: 1번째 줄:
==개요==
==개요==
;MySQL 리플리케이션 복구
;MySQL 레플리케이션 복구
;MariaDB 리플리케이션 복구
;MariaDB 레플리케이션 복구
;MariaDB 리플리케이션 비정상 복구
;MariaDB 레플리케이션 비정상 복구
* [[MariaDB 리플리케이션 설정]]과 같이 마스터 1대, 슬레이브 2대가 있는데
* [[MariaDB 레플리케이션 설정]]과 같이 마스터 1대, 슬레이브 2대가 있는데
* 슬레이브 2대 모두 리플리케이션에 문제가 생긴 상황
* 슬레이브 2대 모두 레플리케이션에 문제가 생긴 상황
* ※ MySQL / MariaDB 동일함
* ※ MySQL / MariaDB 동일함


34번째 줄: 34번째 줄:


==조치==
==조치==
대략 '''[[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>
63번째 줄: 63번째 줄:


==같이 보기==
==같이 보기==
* [[MariaDB 리플리케이션 상태 확인]]
* [[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 }}