Palavras-chave principais: replicação MySQL, como configurar replicação no MySQL, MySQL Master Slave, MySQL replicação passo a passo

O que é a replicação no MySQL?

A replicação no MySQL é um processo que permite copiar dados de um servidor de banco de dados (chamado de master, ou source nas versões mais recentes) para um ou mais servidores secundários (slaves, ou replicas). Essa técnica é essencial para:

  • Aumentar a disponibilidade e tolerância a falhas
  • Distribuir a carga de leitura
  • Realizar backups sem impactar o banco principal
  • Implementar ambientes de testes ou BI com dados atualizados

Por que usar a replicação no MySQL?

Aqui estão os principais benefícios da replicação MySQL:

  1. Alta disponibilidade: em caso de falha do servidor principal, você pode promover um slave para manter o serviço.
  2. Escalabilidade de leitura: consultas SELECT podem ser redirecionadas para os servidores de réplica.
  3. Separação de ambientes: permite manter ambientes analíticos separados dos operacionais.
  4. Backups consistentes: é possível realizar backups nos slaves sem sobrecarregar o servidor principal.

Tipos de replicação no MySQL

MySQL suporta diferentes modelos de replicação:

Tipo de ReplicaçãoDescrição
Baseada em log binárioA forma mais comum. Usa o log binário (binlog) para replicar comandos SQL.
Baseada em row (linha)Replica mudanças linha a linha, ideal para precisão.
GTID (Global Transaction ID)Identifica transações globalmente, facilitando failover automático.
Multi-source (a partir do MySQL 5.7)Permite replicar de múltiplos masters para um único slave.

Como configurar a replicação no MySQL (Passo a Passo)

Pré-requisitos

  • Duas instâncias MySQL (Master e Slave)
  • Rede configurada com acesso mútuo
  • Binlog habilitado no servidor Master
  • Mesmo conjunto de dados em ambos os servidores

1. Configure o servidor Master

Edite o arquivo de configuração (my.cnf ou my.ini):

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=nome_do_banco # ou use binlog-ignore-db

Reinicie o MySQL:

sudo systemctl restart mysql

Crie um usuário de replicação:

sql
CREATE USER 'replicador'@'%' IDENTIFIED BY 'senha_forte';
GRANT REPLICATION SLAVE ON *.* TO 'replicador'@'%';
FLUSH PRIVILEGES;

Obtenha o status do binlog atual:

sql
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

Anote o File e Position retornados.


2. Configure o servidor Slave

Edite o my.cnf:

[mysqld]
server-id=2
relay-log=relay-log

Reinicie o MySQL e conecte ao master:

sqlCopiarEditarCHANGE MASTER TO
MASTER_HOST='ip_do_master',
MASTER_USER='replicador',
MASTER_PASSWORD='senha_forte',
MASTER_LOG_FILE='mysql-bin.000001', -- substitua o valor pelo file anotado no procedimento mais acima
MASTER_LOG_POS=12345; -- substitua o valor pelo position anotado no procedimento mais acima

START SLAVE;

Verifique o status da replicação:

sql
SHOW SLAVE STATUS\G

Certifique-se de que Slave_IO_Running e Slave_SQL_Running estejam como Yes.


Dicas e boas práticas

  • Use GTIDs para facilitar o failover com ferramentas como mysqlfailover ou Orchestrator.
  • Monitore o atraso da replicação (Seconds_Behind_Master) para garantir que os dados estejam sincronizados.
  • Crie alertas para falhas na replicação com ferramentas como Prometheus + Grafana ou Percona Monitoring and Management (PMM).
  • Não use replicação para writes simultâneos nos slaves, pois isso pode quebrar a consistência.

Conclusão

A replicação no MySQL é uma ferramenta poderosa para garantir alta disponibilidade, escalabilidade e segurança dos dados. Quando bem configurada, permite reduzir riscos e melhorar a performance do sistema, especialmente em ambientes com alto volume de leitura ou requisitos de redundância.

Leitura recomendada