Mysql
exitStateAction 在 MySQL INNODB Cluster 上未按預期工作
我正在設置和測試一個
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 的事實,它確實是有道理的。