Estou montando e testando um Innodb Cluster
. Até agora eu tenho três nós rodando 8.0.27 e dois roteadores todos funcionando bem.
Agora quero testar o que acontece se a conexão de rede desaparecer repentinamente em um.
Eu tenho todos os três nós configurados com:
"autoRejoinTries", "3"
"exitStateAction","OFFLINE_MODE"
"expelTimeout":"5"
Então, quando eu removo a conexão de rede do nó 3 usando:
ifdown eth0
Vejo que ele desaparece do cluster e mostra como:
"status": "UNREACHABLE",
e no próprio servidor diz:
"Cluster has no quorum and cannot process write transactions: Group has no quorum"
Mas eu estava esperando que o banco de dados entrasse em offline_mode
. Mas quando eu verifico, ele ainda diz que está desligado:
SELECT @@GLOBAL.offline_mode;
+-----------------------+
| @@GLOBAL.offline_mode |
+-----------------------+
| 0 |
+-----------------------+
Eu perdi alguma coisa, ou entendi mal o que "exitStateAction","OFFLINE_MODE"
significa?
Para responder à minha própria pergunta, foi por causa do
autoRejoinTries
valor.Basicamente, assumindo um valor de três, ele faz:
expel_timeout
)Em outras palavras, você tem que esperar 10 minutos antes de entrar em
OFFLINE_MODE
. DefinirautoRejoinTries
para 0 ou 1 tem o efeito desejado de fazê-lo entrarOFFLINE_MODE
imediatamente. Obviamente, ele não tenta se reconectar automaticamente, o que é uma dor se você tiver uma interrupção muito breve.Eu acho que à luz do fato de que uma das opções é,
ABORT_SERVER
por exemplo, desligar o MySQL, faz sentido.