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 |