1. 程式人生 > 其它 >MySQL增強半同步複製執行net_flush()失敗

MySQL增強半同步複製執行net_flush()失敗

現象:

目前線上有套基於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:

https://bugs.mysql.com/search.php?search_for=net_flush&bug_type%5B%5D=Server&status%5B%5D=All&severity=&limit=10&order_by=&cmd=display&phpver=8.0&os=0&os_details=&bug_age=0&cpu_arch=0&cpu_arch_details=&last_updated=0&tags=&similar=

MySQL 8.0沒有關於net_flush()的BUG。

檢視MySQL 5.7關於net_flush()的BUG:

https://bugs.mysql.com/search.php?search_for=net_flush&bug_type%5B%5D=Server&status%5B%5D=All&severity=&limit=10&order_by=&cmd=display&phpver=8.0&os=0&os_details=&bug_age=0&cpu_arch=0&cpu_arch_details=&last_updated=0&tags=&similar=

https://bugs.mysql.com/search.php?search_for=net_flush&bug_type%5B%5D=Server&status%5B%5D=All&severity=&limit=10&order_by=&cmd=display&phpver=5.7&os=0&os_details=&bug_age=0&cpu_arch=0&cpu_arch_details=&last_updated=0&tags=&similar=

檢視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”掛起:

參考案例:https://blog.51cto.com/hcymysql/2146955