一次mysql主从同步异常处理

年前单位组织关机,节后重新开启服务器后,zabbix监控发现mysql主从同步异常了。
show slave status \G看异常具体情况是
Slave_SQL_Running: NO
报错是一个表写入有问题。
尝试了把slave的包往前读也没用。

具体办法如下:
主服务器上把在读的那个日志读取程txt
/usr/bin/mysqlbinlog master-bin.000185 >test.txt
然后less这个tx查当前在读的档,往前看最近的档是多少,
change master to master_host='主机',master_user='xxx',master_password='xxxx',master_log_file='mysql-bin.000185',master_log_pos=130502

只能是重新做一次主从:
先在主机上
FLUSH TABLES WITH READ LOCK;--让主库只读
show master status;
备份主库,同步到从库还原,
从库stop slave;
改slave类似change master to master_host='主机',master_user='xxx',master_password='xxxx',master_log_file='mysql-bin.000185',master_log_pos=130502
start slave:
主库UNLOCK TABLES;
试了一下这次报
Slave_IO_Running: No
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
还是数据有截断,同步不了
问了下开发,有啥程序一直在写库的,主库只读也会有问题。说是有一个job的服务会一直写库。
使用ansible停了这个服务后,重新做了一遍以上操作,正常了。

总结:
数据库主从同步还是需要先停服务再关数据库,服务不停,数据库改成只读还是会有数据截断。

猜你喜欢

转载自blog.51cto.com/14302858/2631746