涉及知识点
mysql 主从同步 ,参考: MySQL数据库设置主从同步
mysqlbin log查看, 参考:MySQL的binlog日志
解决slave报错, 参考:
Backup stopped working !! Slave_SQL_Running: No
mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查
slave库失败原因分析、解决,及根据binlog 修改position 手动同步
问题
客户反映报表缺少近期的数据。
分析解决
master 数据库提供服务,slave数据库作报表服务器,通过mysqlbin log做主从同步。
从报表数据来看,缺少了从10/28到现在(11/18)之前的数据,比对master、slave数据库主要表数据,发现:
10/28之后的slave库数据缺失,一致未同步。
- 查看slave mysql同步状态:
关注图中黄色字段:
Slave_IO_Running: Yes
Slave_SQL_Running: No --- 表示sql进程未工作,问题就处在这。
图中粉色背景,Last_Error: ....
'Duplicate entry '1169595' for key 'PRIMARY'' on query. Default database: ''. Query: 'insert into user。。。
这个错误很简单,违反主键唯一约束。
2. mysql 错误日志 通过my.conf 确定出错误日志文件,vi 查看,根据日志151028搜索到以下:
从日志中,看到10/28 1:28:55 mysql 非正常关闭; 1:29 重启后,开始recovery。 1:29:16s 后I/O errror; 1:30:19s SQL error, slave SQL thread aborted(停止工作)。
mysql也给出了解决办法:
Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.000274' position 504869752
重启,并告诉sql 执行的binlog 文件设置position, 重启slave. 错误仍存在,如下
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000274',MASTER_LOG_POS=504873114; ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first mysql> stop slave; Query OK, 0 rows affected (0.00 sec) mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000274',MASTER_LOG_POS=504873114; Query OK, 0 rows affected (1.98 sec) mysql> start slave; Query OK, 0 rows affected (0.00 sec) mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.17.128.15 Master_User: cns Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000281 Read_Master_Log_Pos: 361947072 Relay_Log_File: app3-relay-bin.000002 Relay_Log_Pos: 253 Relay_Master_Log_File: mysql-bin.000274 Slave_IO_Running: Yes Slave_SQL_Running: No