近一个月处理历史数据问题时,竟然连续遇到了2个MySQL BUG,分享给你们一下,也欢迎指正是否有问题。php
数据库版本: MySQL5.7.25 - 28html
操做系统: Centos 7.7(不重要)mysql
数据库架构: 主-从-级联从sql
数据库参数: 数据库
innodb_support_xa = 1 # 因主库存在XA事务,所以设置支持xa事务
replicate_wild_do_table=yy.% # 只同步其中一个库
异常场景:级联从库上同步从库中的其中一个库(或者部分表,即存在过滤筛选部分表的场景),其中主库中其余库(非须要的库)存在XA事务,此时级联从库上启动主从同步时出现如下错误架构
[ERROR] Slave SQL for channel 'yy': Worker 1 failed executing transaction 'ANONYMOUS' at master log , end_log_pos 120460779;
The use of replication filters with XA transactions is not supported, and can lead to an undefined state in the replication slave.
Error_code: 3227
官方文档解答:工具
查找官方文档,有记录对应问题spa
https://forums.mysql.com/read.php?3,667908,667908操作系统
该问题已在MySQL8.0中修复,对应的MySQL8.0中的内容能够参考此连接code
https://dev.mysql.com/doc/refman/8.0/en/xa.html
临时解决办法:
数据库版本: MySQL5.6.27-75,MySQL5.7.25-28(从MySQL5.6.27-75原地升级的)
数据库架构: 主-从
异常场景:
将一张大表转移到备份库中,使用rename的方式出现异常
SQL> alter table tbname rename to bak_db.tbname;
错误信息以下:
2020-06-21T03:10:54.694718Z 200 [ERROR] InnoDB: Operating system error number 2 in a file operation. 2020-06-21T03:10:54.694737Z 200 [ERROR] InnoDB: The error means the system cannot find the path specified. 2020-06-21T03:10:54.694742Z 200 [ERROR] InnoDB: File ./testdb/tbname.ibd: 'rename' returned OS error 71.
在MySQL5.6.27 -75及其从库MySQL5.7.25-28的版本中均出现
官方文档解答:
经查,官方文档中有对应的bug记录
解决办法:
该BUG已修复,其余版本中已解决,可是经过实践发现,原地升级的方式仍未解决,你们能够亲自实践验证一下。