mysql主从同步出错,这个时候从服务器会停止同步服务,等待人工恢复,此时有多种方法来解决。
一、查看状态
在从服务器,登陆mysql,查询从服务器的状态:
sql
从服务器mysql> show slave status\G
图1
可以看出从服务器出现1049错误。
二、解决方案1:解决异常
比如图1,提示数据库不存在(可能在从服务器被删掉了),那么可以在从服务器创建一个空的数据库,然后重启:
sql
-- 停止同步
从服务器mysql> stop slave;
-- 启动同步
从服务器mysql> slave start;
-- 查看状态
从服务器mysql> show slave status;
图2
三、解决方案2:跳过异常
这里也有三种解决方法。
3.1 跳过N个事务
sql
-- 停止同步
从服务器mysql> stop slave;
-- 跳过操作
从服务器mysql> set global sql_slave_skip_counter=1;
-- 启动同步
从服务器mysql> start slave;
-- 查看状态
从服务器mysql> show slave status;
3.2 跳过某种类型错误
在从服务器,编辑 /etc/my.cnf:
[mysqld]
slave-skip-errors=1049,1007,1008
错误号可以参考图1查询,比如图1的错误号是 1049。
修改后重启mysql服务。
bash
从服务器$ service mysqld restart
3.3 跳过所有错误
在从服务器,编辑 /etc/my.cnf:
[mysqld]
slave-skip-errors=all
修改后重启mysql服务。
bash
从服务器$ service mysqld restart