mysql主从快速恢复_mysql主从同步常见异常及恢复方法

1. 一般的异常只需要跳过一步即可恢复

>slave stop;

>SET GLOBAL sql_slave_skip_counter = 1;

>slave start;

2.断电导致主从不能同步时,通主库的最后一个bin-log日志进行恢复

在主库服务器上,mysqlbinlog mysql-bin.xxxx > binxxxx.txt

tail -n 100000  binxxxx.txt > tail-binxxxx.txt

vim tail-binxxxx.txt 打开tail-binxxxx.txt文件找到最后一个postion值

然后在从库上,change host to 相应正确的值

>slave stop;

>change master to master_host='ip', master_user='username', master_password='password', master_log_file='mysql-bin.xxxx', master_log_pos=xxxx;

>slave start;

>show slave status\G;

3.主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定

略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断

[mysqld]

slave-skip-errors = 1062,1032,1060

1 如果:Slave_IO_Running=NO,Slave_SQL_Running=YES,Last_Errno=0

mysql> slave stop ;

mysql> slave start;

mysql> show slave status ;

如果Slave_IO_Running=YES,Slave_SQL_Running=YES,Last_Errno=0

那么,数据库的replication已经成功启动。

2 如果提示有duplicated数据,直接delete那条数据之后的,然后

mysql> slave stop ;

mysql> slave start;

mysql> show slave status ;

如果Slave_IO_Running=YES,Slave_SQL_Running=YES,Last_Errno=0

那么,数据库的replication已经成功启动。

3 如果还不行,查看错误日志,看看是卡在那个binlog上了,比如 : 卡在000079

则:

SLAVE STOP;

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000080', MASTER_LOG_POS=0;

SLAVE START;

4 如果错误提示: [mysql]Table tblName is marked as crashed and should be repaired

Mysql提示tblName表格已损坏,需要修复,解决方法:

进入到对应的数据库目录:

cd /var/lib/mysql/dbname

使用myisamchk修复:

shell> myisamchk -r tblName

如果提示failed

shell> myisamchk -f tblName

强制修复

恢复时间比较长,耐心等待修复完成

然后重启mysql就行


版权声明:本文为weixin_39585378原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。