DBAtlas · Atlas de operações de banco de dados

MySQL InnoDB Cluster (Group Replication + MySQL Router)

MySQLNível: AvançadoDuração: 90–120 min

Monta um InnoDB Cluster single-primary a partir de 3 (ou 5–9) servidores MySQL já instalados no mesmo data center: dba.configureInstance, createCluster e addInstance com clone pela AdminAPI do MySQL Shell; bootstrap do MySQL Router (6446 RW / 6447 RO), monitoramento com cluster.status(), teste de failover e runbooks de perda de quorum, interrupção total e rolling restart. Ao final, você tem um cluster que faz failover automaticamente quando o primary cai, com a aplicação conectando pelo Router. Para site remoto ou simples escalonamento de leitura, use a replicação clássica; para a operação diária de um cluster já instalado, use o guia de operação do InnoDB Cluster.

Topologia: 3–9 nós MySQL + 1 servidor Router

Antes de começar

  • O MySQL … está instalado em todos os nós na mesma versão secundária (guia DBAtlas Instalação do MySQL em servidor único), com GTID ativado e um server_id diferente em cada nó. O root do sistema operacional consegue conectar com mysql sem senha.
  • Os nós 2..… não têm dados que precisem ser mantidos: ao entrar no cluster, recebem um clone do nó 1 (…) e seus dados existentes são apagados.
  • Todas as tabelas do nó 1 são InnoDB e têm primary key (requisito do Group Replication). A consulta de verificação deve retornar vazia.
  • Os nós se alcançam pelas portas 3306 (MySQL e comunicação do Group Replication), 33060 (X Protocol) e 33061; o servidor do Router alcança os nós em 3306/33060. A latência é baixa (mesmo data center; < 1–2 ms).
  • Relógios sincronizados (chrony).
  • O número de nós é ímpar (…): … nós toleram a perda de no máximo … nó(s). Um número par não acrescenta tolerância.
  • Há uma senha forte pronta para a conta de administrador do cluster (…) (no mínimo 8 caracteres, maiúsculas/minúsculas, dígitos, caracteres especiais). O MySQL Shell e o Router pedem a senha nos passos sem exibi-la na tela; o Shell é instruído a não armazená-la.
  • O servidor do Router consegue acessar repo.mysql.com (o repositório do MySQL é adicionado neste guia).

Fases do guia

  • Preparação (todos os nós MySQL) — Abrir as portas do cluster no firewall · Registrar a porta do Group Replication no SELinux · Adicionar as configurações do cluster (…) · Reiniciar o MySQL · Instalar o MySQL Shell
  • Configuração das instâncias (dba.configureInstance) — Criar a conta de administrador do cluster (…) · Verificar as instâncias remotamente
  • Criar o cluster — Criar o cluster · Adicionar o nó ao cluster (…) · Verificar o status do cluster
  • MySQL Router — Adicionar o repositório do MySQL (servidor do Router) · Instalar o Router e o Shell · Fazer o bootstrap do Router · Iniciar o serviço do Router · Abrir as portas do Router no firewall · Testar a conexão pelo Router
  • Verificação e monitoramento — Status detalhado · Monitorar os membros com SQL
  • Teste de failover — Failover: parar o primary · Failover: parar o primary · Failover: ver o novo primary · Failover: ver o novo primary · Failover: o Router está direcionando para o novo primary? · Failover: o Router está direcionando para o novo primary? …
  • Perda de quorum e interrupção total — Quorum: diagnosticar o estado · Quorum: diagnosticar o estado · Quorum: forçar o quorum com a partição que continua ativa · Quorum: forçar o quorum com a partição que continua ativa · Quorum: parar o grupo antigo no nó que voltou (…) · Quorum: parar o grupo antigo no nó que voltou (…) …
  • Rolling restart (manutenção) — Rolling: reiniciar um secondary (…) · Rolling: reiniciar um secondary (…) · Rolling: transferir o papel de primary · Rolling: transferir o papel de primary · Rolling: reiniciar o primary antigo · Rolling: reiniciar o primary antigo …
Abrir o plano passo a passo para o seu ambiente →