Estou rodando um banco de dados galera de 3 clusters, e durante os testes de redundância, vi que se eu desligar corretamente 2 dos 3 nós, o último ainda aceita escritas, mesmo sendo o único único ativo.
Não tenho certeza se é assim que quero que meu cluster funcione. É possível definir o cluster para rejeitar gravações quando apenas 1 nó estiver ativo?
O tamanho do cluster (
wsrep_cluster_size
) é um valor dinâmico que aumenta e diminui à medida que você ativa e desativa nós em seu cluster do Galera.Quando você desliga normalmente dois de seus três nós, está efetivamente transferindo o status de Componente Primário para o nó restante. Não há risco de divergência de dados (split-brain), portanto, ainda é seguro para o último nó atender às solicitações. O tamanho do cluster torna-se 1 e você fica praticamente executando um único servidor MySQL.
Acho que o Galera Cluster não funciona assim. Conceitualmente, os nós se preocupam apenas em formar um quorum. Para cada um dos nós, se estiver em maioria, detém o status de Componente Primário. Os nós isolados tornam-se não primários.
Se você perdeu abruptamente dois de seus três nós, o nó restante se encontrará em minoria, entrará no status não primário (mostrado em
wsrep_cluster_status
) e recusará leituras e gravações.Recursos adicionais
Quórum Ponderado na Documentação do Cluster Galera
Como o status do Componente Primário permanece com a maioria:
Como o Galera Cluster se protege de cenários de cérebro dividido colocando nós sem maioria no status não primário: