近一個月處理歷史數據問題時,竟然連續遇到了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已修復,其餘版本中已解決,可是經過實踐發現,原地升級的方式仍未解決,你們能夠親自實踐驗證一下。