MySQL增強半同步複製執行net_flush()失敗
阿新 • • 發佈:2022-12-09
現象:
目前線上有套基於MySQL 8.0.26做的增強半同步主從複製資料庫,檢視log_errorr發現有部分net_flush()執行失敗的報錯:
2021-12-28T14:04:24.663005+08:00 11 [ERROR] [MY-011161] [Repl] Semi-sync master failed on net_flush() before waiting for replica reply. 2021-12-28T14:51:49.217811+08:00 413824 [ERROR] [MY-011161] [Repl] Semi-sync master failed on net_flush() before waiting for replica reply. 2022-07-15T14:53:48.661852+08:00 14621647 [ERROR] [MY-011161] [Repl] Semi-sync master failed on net_flush() before waiting for replica reply. 2022-11-15T16:35:27.219541+08:00 1479506 [ERROR] [MY-011161] [Repl] Semi-sync master failed on net_flush() before waiting for replica reply. 2022-11-15T17:15:12.815920+08:00 1558519 [ERROR] [MY-011161] [Repl] Semi-sync master failed on net_flush() before waiting for replica reply. 2022-11-15T19:32:27.765331+08:00 1567874 [ERROR] [MY-011161] [Repl] Semi-sync master failed on net_flush() before waiting for replica reply. 2022-11-15T20:17:57.104040+08:00 1570576 [ERROR] [MY-011161] [Repl] Semi-sync master failed on net_flush() before waiting for replica reply. 2022-11-16T20:51:59.230221+08:00 1571592 [ERROR] [MY-011161] [Repl] Semi-sync master failed on net_flush() before waiting for replica reply.
MySQL增強半同步master端在等待slave端reply前執行net_flush()失敗,而根據業務反饋沒有影響業務。
MySQL 8.0搜尋關於net_flush()的BUG:
MySQL 8.0沒有關於net_flush()的BUG。
檢視MySQL 5.7關於net_flush()的BUG:
檢視MySQL提交的BUG內容:
https://bugs.mysql.com/bug.php?id=88578
大致意思是,在MySQL 5.7可能會因為網路不穩定導致:半同步複製的master端在得到slave端reply前執行net_flush(0)失敗。
在MySQL 5.7和MariaDB 10版本會造成slave端“IO Thread”掛起: