不止是搬运工
我们更专注精品分享!

一则MySQL主从复制故障的排查

因为之前的运维要离职,这两天正在做交接,故障一个接一个,谁能告诉我这是不是坑?

上午开发说主从复制挂了,话说我还没交接到数据库这部分,各种原因只能我来排查。

不管3721,登陆主库先备份一下再说,保险万一!

登陆从库查看状态,show slave status\G,发现Slave_SQL_Running: No,并且下面有个1062的错误,类似这样:Last_Error: Error ‘Duplicate entry ‘6510-1481337228-13-629904.000000’ for key ‘PRIMARY” on query. Default database: ‘dataplatform’. Query: ‘insert into radar_info_tmp values(6510,1481337228,93,13,629904.00,175.80,-10.32)’

很明显是主键冲突,查看error日志得到的信息和上面的类似,手动同步一下试试先。

1、进从库停止同步

mysql> stop slave;

2、到主库锁表

mysql> FLUSH TABLES WITH READ LOCK;    #锁表
Query OK, 0 rows affected (0.08 sec)

mysql> show master status;   #查看file和position
+------------------+-----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+-----------+--------------+------------------+-------------------+
| mysql-bin.000740 | 281878876 | | | |
+------------------+-----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

3、切回从库手动同步

mysql> change master to master_host = '192.168.4.31', master_user = 'zzz', master_port=3306, master_password='xxxxx', master_log_file = 'mysql-bin.000740', master_log_pos=281878876;    #这里的用户和密码我用zzz和xxxxx代替了
Query OK, 0 rows affected, 2 warnings (0.89 sec)
mysql> reset slave;
mysql> start slave;   #开启同步

4、再回主库解锁

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

5、再回从库查看状态

mysql> show slave status\G

 

可以看到同步成功了。。

再记录一下,还有种忽略错误直接同步的方法,不过个人不太建议用,适合测试环境,对数据要求不高的情况。

stop slave;   #停止同步

set global sql_slave_skip_counter=1;   #跳过1步错误,如果想跳多步,可以修改1为相应的数字

reset slave;

start slave;   #开启同步

未经允许不得转载:Opdev.me » 一则MySQL主从复制故障的排查

支付宝打赏 微信打赏

博主五行缺钱,如果文章对您有帮助,欢迎打赏博主!

评论 抢沙发

评论前必须登录!

 

你拍一,我拍一,小霸王出了学习机!

撸一发!