测试

从库的错误日志: 

Slave I/O thread: connected to master 'rep@10.0.0.103:3306',replication started in log 'mysql-bin.000006' at position 129434
Slave SQL thread initialized, starting replication in log 'mysql-bin.000006' at position 129434, relay log '/usr/local/mysql/data/relay-bin.000012' position: 129644

主库的bin.00006末尾记录:

 at 101750
 161130 10:48:10 server id 103  end_log_pos 102098 CRC32 0x94677717 Write_rows: table id 73 flags: STMT_END_F 
 at 102098
 161130 10:48:10 server id 103  end_log_pos 102129 CRC32 0x153f102e


对比,可发现主库的006binlog截止到102098,从库的已指向129493。

主库的binlog不全。


原因:

    此次是错误试验,执行的为插入1000条数据的过程,执行到一半时,强行关机。因此主服务器没有时间执行sync,导致binlog的数据丢失。但由于每插入一条记录,都有commit,所以主库和从库的数据库记录是一致的。


解决:

没有使用GTID,则在主库找到最接近从库记录的binlog位置,象在此列中,可以指定下一个binlog超始位置

stop slave;
change master to master_log_file='mysql-bin.000007',master_log_pos=4;
start slave;
stop slave
reset master
reset slave
change master to master_host='10.0.0.103', master_user='rep',master_password='111111', master_auto_position=1;
set global gtid_purged = '0e10a193-b5fc-11e6-b58c-5254008ee0d5:1-232';
start slave