Mysql

exitStateAction 在 MySQL INNODB Cluster 上未按預期工作

  • November 12, 2021

我正在設置和測試一個Innodb Cluster. 到目前為止,我有三個執行 8.0.27 的節點和兩個路由器都工作正常。

我現在想測試如果網路連接突然消失會發生什麼。

我設置了所有三個節點:

"autoRejoinTries", "3"
"exitStateAction","OFFLINE_MODE"
"expelTimeout":"5"

因此,當我使用以下命令從節點 3 中刪除網路連接時:

ifdown eth0

我看到它從集群中消失並顯示為:

"status": "UNREACHABLE",

在伺服器本身上它說:

"Cluster has no quorum and cannot process write transactions: Group has no quorum"

但我期待數據庫會進入offline_mode. 但是當我檢查時,它仍然說它已關閉:

SELECT @@GLOBAL.offline_mode;
+-----------------------+
| @@GLOBAL.offline_mode |
+-----------------------+
|                     0 |
+-----------------------+

我錯過了什麼,或者誤解了什麼"exitStateAction","OFFLINE_MODE"意思?

要回答我自己的問題,這是因為autoRejoinTries價值。

基本上,假設值為 3,它會:

  • 網路故障
  • 5秒過去了
  • 在所有節點上都發生了發生問題的“懷疑”
  • 5 秒過去了,看節點是否重新出現 ( expel_timeout)
  • 節點被驅逐出集群
  • 嘗試連接 (1)
  • 等5分鐘
  • 嘗試連接 (2)
  • 等5分鐘
  • 嘗試連接 (3)
  • 執行 exitStateAction

換句話說,您必須等待 10 分鐘才能進入OFFLINE_MODE. 設置autoRejoinTries為 0 或 1 具有使其立即進入的預期效果OFFLINE_MODE。當然,它不會嘗試自動重新連接,如果您有非常短暫的中斷,這會很痛苦。

我想鑑於其中一個選項是ABORT_SERVER關閉 MySQL 的事實,它確實是有道理的。

引用自:https://dba.stackexchange.com/questions/302409