MySQL 主从同步报1236错误

MySQL 主从同步报1236错误

 

MySQL GTID主从模式下断链出现error 1236错误,详细内容如下:

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Slave has more GTIDs than the master has, using the master's SERVER_UUID. This may indicate that the end of the binary log was truncated or that the last binary log file was lost, e.g., after a power or disk failure when sync_binlog != 1. The master may or may not have rolled back transactions that were already replica'

 

分析处理

出现此错误的原因是Slave的GTID大于Master的GTID,这种问题的出现往往是在Slave执行了DML操作,下面总结两种修复主从的方式。

方法一

 

在主从的GTID差值很小的情况下可以等待Master的GTID追上Slave之后重新启动主从,这样可能导致主从数据不一致,主从恢复后需要手动恢复数据。在小型数据库数据量很小的情况下可以考虑使用。除了等待Master自己追平GTID之外,也可在Master手动跳过GTID。

#停掉主从,虽然复制现在本身是停止状态
STOP SLAVE;
#设置需要跳过的GTID
SET @@SESSION.GTID_NEXT='7efd338e-ee5e-11ea-8957-000c29bed658:554472';
#设置空事务
BEGIN; 
COMMIT;
#恢复事物号
SET SESSION GTID_NEXT = AUTOMATIC;
START SLAVE;

 

方法二

 

如果此时的主从GTID值差值很大时,将考虑重新配置主从,这样可以保证主从数据保持在一直状态。

 

1、stop slave 停掉主从,虽然复制现在本身是停止状态

 

2、如果主库没有备份的情况下需要锁表备份数据,应用空闲时间处理。

FLUSH TABLES WITH READ LOCK;

3、检查主库binlog号及pos点

MySQL 主从同步报1236错误

 

 

 4、使用mysqldump导出数据库,并将备份文件转入主库服务器。

mysqldump -u root -ppassword --opt -R database_giao > database_giao.sql

 

5、回到主库解锁表:UNLOCK TABLES

 

6、登录到从服务器,恢复需要同步的数据库

mysql -uroot -p database_giao < database_giao.sql

 

7、登录从库mysql,一次执行一下命令即可。

slave stop;

reset slave;

change master to master_host='主机IP',master_user='master',master_password='master',master_log_file='mysql-bin.000001',master_log_pos=123936801;

slave start;
#查看主从
show master status;

 

上一篇:LeetCode题解(1236):网络爬虫(Python)


下一篇:HDU 1236