文章目录
  1. 1. show slave status\G;

架构说明:

1主。2从。2从的配置都一样。

版本也一样。

实然发现其中一台从不同步了。报错如下。

show slave status\G;

* 1. row *

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.20

Master_User: slave

Master_Port: 3306

Connect_Retry: 10

Master_Log_File: mysql-bin.002552

Read_Master_Log_Pos: 233406800

Relay_Log_File: mysql-relay-bin.000007

Relay_Log_Pos: 204127317

Relay_Master_Log_File: mysql-bin.002552

Slave_IO_Running: Yes

Slave_SQL_Running: No

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 1032

Last_Error: Could not execute Delete_rows event on table redmine.reports; Can’t find record in ‘reports’, Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event’s master log mysql-bin.002552, end_log_pos 204464875

搜索找了不少文档。也有很暴力的解决方案:

slave-skip-errors=1032 但不建议采用这种方案。会导致以后数据不致的情况出现。

其正确的解决方案如下:

主数据库同步模式是binlog_format = MIXED

第一台从库服务器同步模式也是binlog_format = MIXED,则第一台从库同步没问题

第二台从库的同步模式需要修改下,否则出现1032错误,该服务器同步模式设置binlog_format = STATEMENT

经过观察mysql的错误日志,发现问题解决。没有出现1032的错误。

提醒 :在重启的时候一定要先slave stop

否则会有如下错误 :

Got fatal error 1236 from master when reading data from binary log: ‘Client requested master to start replication from impossible position’

它的解决方案网上挺多的。我就记录下吧:

mysqlbinlog mysql-bin.0000xx > a.txt

tail -n 20 a.txt

找到最后正确的同步pos

然后再

CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.002552’, MASTER_LOG_POS=233406800;

问题就能得到解决。如果你解决不了。那就只能重做主从了。:)

文章目录
  1. 1. show slave status\G;