1837年MySQL主从复制错误

  

MySQL5.6.37版本,某人在测试环境主库误操作执行删表操作,导致主从断开,在从库查看主从信息如下:

  

Last_Errno: 1837   

Last_Error:工人3失败执行事务& # 39;& # 39;在主日志mysql-bin。013343年,end_log_pos 289330740;当@@SESSION错误& # 39;。GTID_NEXT GTID设置,,

  

您必须显式地将其设置为一个不同的值提交或回滚。请检查GTID_NEXT变量手册页的详细解释。Current 

  

@@SESSION。GTID_NEXT & # 39; 07 fd3067 b250 - 11 - e7 a2f0 - 1866 da9e4b15:2618462902& # 39;强生# 39;在查询。默认数据库:& # 39;dbname # 39;。查询:& # 39;删除表如果存在TABLENAME_1, TABLENAME_2…

     

执行删表操作怎么可能会导致主从断开,问后知道是通过某工具误操作导致了删表,并立刻停止了。

     

故障可能原因:

  

1,创建表table_name从table_name select *;会拆分成创造表和插入两个事务,传到奴隶时,奴隶执行完,,创建表以后,没有插入的GTID,于是报错

  

2, MyISAM存储引擎,MyISAM引擎支持插入语延迟法,插入延迟是异步写入,也就是一旦执行立即返回给客户端成功.mysql内部处理插入延迟时,会将多个线程的插入合并后一起执行,但是只生成了一个GTID;于是传到奴隶后,由于是MyISAM表,从库的同样只能执行第一条SQL,于是报错

  

3,主库innodb执行一个事务,只产生一个gtid, myisam不支持事务,事务的第一条执行完以后,第二个sql就没有gtid,于是报错

  

4,临时表

  

5,错误      

本次故障

  

1,检查对应的库没有MyISAM表:

  

,,选择table_schema,从information_schema table_name、发动机。表在引擎!=& # 39;innodb # 39;和table_schema=& # 39; dbname # 39;;

  

2,检查过enforce_gtid_consistency主从库都为,创建表……选择语句不能执行成功,并且这次故障并不涉及创建表……选择语句,故排除

  

3,主从存储引擎一致

  

4,没有临时表

     

在主库审计日志查看,执行了下降模式dbname;

  

20200707 12:55:20 & # 39;/* ApplicationName=DataGrip 2020.1.4 */下降模式dbname # 39;

     

查看主库binlog:

  在289328506

#   

# 200707 12:55:08服务器id 100, end_log_pos 289328554 CRC32 0 x1401e82a, GTID(提交=yes)

  

设置@@SESSION.GTID_NEXT=

/* ! */;   在289328554

#   

# 200707 12:55:08服务器id 100, end_log_pos 289329642 CRC32 0 x0728afdf,查询,thread_id=2388454119,,exec_time=12,error_code=0

  

设置时间戳=1594097708/* ! */;

  

设置@@session.sql_mode=270532608/* ! */;

  

/* !\ C utf8mb4 *//* ! */;

  

设置@@session.character_set_client=45, @@session.collation_connection=45, @@session.collation_server=33/* ! */;

  

删除表如果存在TABLENAME_1, TABLENAME_2, TABLENAME_3, TABLENAME_4,……/* ! */;

  在289329642

#   

# 200707 12:55:08服务器id 100, end_log_pos 289330740 CRC32 0 x0d0122e4,查询,thread_id=2388454119,,exec_time=12,error_code=0

  

设置时间戳=1594097708/* ! */;

  

删除表如果存在TABLENAME_5, TABLENAME_6, TABLENAME_7, TABLENAME_8,……/* ! */;

  在289330740

#   

# 200707 12:55:08服务器id 100, end_log_pos 289331832 CRC32 0 xd8409afa,查询,thread_id=2388454119,,exec_time=12,error_code=0

  

设置时间戳=1594097708/* ! */;

  

删除表如果存在TABLENAME_9, TABLENAME_10, TABLENAME_11, TABLENAME_12,……/* ! */;

  在289331832

#   

# 200707 12:55:08服务器id 100, end_log_pos 289332298 CRC32 0 xa6657cc5,查询,thread_id=2388454119,,exec_time=12,error_code=0

  

设置时间戳=1594097708/* ! */;

  

删除表如果存在TABLENAME_13, TABLENAME_14, TABLENAME_15, TABLENAME_16,……/* ! */;

  在289332298

#   

# 200707 12:55:20服务器id 100, end_log_pos 289332346 CRC32 0 x0cc19e83, GTID(提交=yes)

  

设置@@SESSION.GTID_NEXT=

/* ! */;      

查看从库binlog:

  在19856236

#   

# 200707 12:55:08服务器id 100, end_log_pos 19856284 CRC32 0 x5e42595e,GTID(提交=yes)

  

设置@@SESSION.GTID_NEXT=

/* ! */;   

删除表如果存在TABLENAME_1, TABLENAME_2 TABLENAME_3, TABLENAME_4,……在19857398 #

  

# 200707 12:55:23服务器id 100, end_log_pos 19857446 CRC32 0 x81998bd5,GTID(提交=yes)

  

设置@@SESSION.GTID_NEXT=

/* ! */;   在19857446

#   

# 200707 12:55:23服务器id 100, end_log_pos 19857509 CRC32 0 x0916a5e2,查询,thread_id=2388456043,,exec_time=0,error_code=0

  

设置时间戳=1594097723/* ! */;

1837年MySQL主从复制错误