一般异常操作,可以如下恢复,只能在从机上做。
slave stop;
set GLOBAL sql_slave_skip_counter=1;
slave start;
show slave status;
但是对于大型实时变换的数据库,该方法不行。
断电异常,可以在从机上如下恢复。
在主库服务器上,寻找通电前的最后一个bin-log日志,通过该日志进行恢复。
mysqlbinlog /var/lib/mysql/mysql-bin.000003 > mysql-bin.000003.txt
tail -n 100000 mysql-bin.000003.txt > tail_mysql-bin.000003.txt
vi tail_mysql-bin.000003.txt
注意最后几行
#170504 10:39:10 server id 107 end_log_pos 2711 Query thread_id=137 exec_time=0 error_code=0
SET TIMESTAMP=1493865550/*!*/;
insert into `menber` (`name`, `id`) values('三清','23')
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
找到偏移量2711
回到从机操作
slave stop;
change master to master_host='172.27.206.6',master_user='repl',master_password='repl', master_log_file='mysql-bin.000003',master_log_pos=2711;
slave start;
show slave status;
从新进行主的插入操作,发现新增加数据可以同步过来。但是故障期间的数据无法同步过来。造成两边数据不一致。对于历史数据不敏感的同步数据库。可以采用此方法。本方法不需要停止主数据库。