Mysql & Maria/admin

replication 깨진 후 bin log 복구

dbavayne 2024. 12. 3. 23:05

slave 가 깨지고나서 bin log를 이용해서 복구하는 방법

 

1. slave 깨짐 확인 

- 1032 error 발생 : 키 없음 오류

 

 

2. slave 복제 중지 및 master binlog 확인

2.1  [slave server] stop slave

mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)

 

2.2  [master server] 

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005 |     3619 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

 

2.3  slave 의 binlog 확인 

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.100.179
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000005
          Read_Master_Log_Pos: 3619
               Relay_Log_File: mysqld_relay_bin.000021
                Relay_Log_Pos: 2328
        Relay_Master_Log_File: mysql-bin.000005

 

2.4  master binlog 추출 후 slave에서 실행 

[master ]

mysqlbinlog --start-position=2328 --stop-position=3619 mysql-bin.000005 > replay.sql

[slave]

source replay.sql 

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=3619;

start slave;

 

2.5  slave 는 정상화가 되었지만 데이터는 불일치 상태임 

checksum table 로 확인 가능 

products 테이블은 데이터 일치 상태

test테이블은 데이터 불일치 상태

 

2.6  pt-table-sync 을 이용해서 Master와 Slave를 비교하고 차이를 동기화

먼저 --print로 안전하게 불일치 여부를 확인하고, 이후 --execute로 동기화를 진행합니다.

 

[slave]

pt-table-sync h=192.168.100.129,P=3306 --sync-to-master --tables=testdb.test --u=root --password='Test!231' --verbose --print

 

slave에 master에는 있는 3건이 비어있음을 확인

 

실행 후 데이터 일치화 확인

pt-table-sync --execute h=192.168.100.129,P=3306 --sync-to-master --tables=testdb.test --u=root --password='Test!231' 

 

'Mysql & Maria > admin' 카테고리의 다른 글

Performance Schema  (1) 2024.12.13
SHOW SLAVE STATUS  (0) 2024.12.03
percona toolkit (pt-table-checksum)  (1) 2024.11.19
mysql 5.7 replication 구성  (0) 2024.11.19
mysql 모니터링 관련  (0) 2024.10.24