我正在设置和测试一个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,它会:
expel_timeout
)换句话说,您必须等待 10 分钟才能进入
OFFLINE_MODE
. 设置autoRejoinTries
为 0 或 1 具有使其立即进入的预期效果OFFLINE_MODE
。当然,它不会尝试自动重新连接,如果您有非常短暂的中断,这会很痛苦。我想鉴于其中一个选项是
ABORT_SERVER
关闭 MySQL 的事实,它确实是有道理的。