Master库短暂离线后Slave库报出如下错误:
Slave I/O: Got fatal error 1236 from master when reading data from binary log: ‘Client requested master to start replication from position > file size; the first event ‘mysql-bin.000001’ at 473132093, the last event read from ‘./mysql-bin.000001’ at 4, the last byte read from ‘./mysql-bin.000001’ at 4.’, Error_code: 1236
在Master库执行:
show master status;
记下File, Position。
在Slave库执行:
slave stop; (stop slave;)
CHANGE MASTER TO MASTER_LOG_FILE=‘testdbbinlog.000008’,MASTER_LOG_POS=107;
slave start; (start slave;)
show slave status \G;
Slave同步状态恢复正常。
查看Slave库中的内容发现与Master库不一致,判断为发生同步故障期间对主库执行的操作(UPDATE及CREAT TABLE等)没有同步到从库。
对主库进行热备份,执行如下命令:
设定只读锁
mysql> flush tables with read lock;
把数据备份到文件
#mysqldump –all-databases > mysql.bak.sql
使用scp命令把备份文件传到Slave库主机
scp mysql.bak.sql [email protected]:/root/
在Master库执行:
show master status;
记下File, Position。
在Slave库执行:
slave stop;
CHANGE MASTER TO MASTER_LOG_FILE=‘testdbbinlog.000008’,MASTER_LOG_POS=107;
slave start;
show slave status \G;
Slave同步状态恢复正常。
Tips:主从库数据相差不大,或者要求数据可以不完全一致的情况下可以忽略错误继续进行同步。
slave stop;
set global sql_slave_skip_counter = 1;
start slave;
解除Master的只读锁(似乎mysqldump结束后会自动解除read lock,待考证):
unlock tables