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:
- Alta disponibilidade: em caso de falha do servidor principal, você pode promover um slave para manter o serviço.
- Escalabilidade de leitura: consultas SELECT podem ser redirecionadas para os servidores de réplica.
- Separação de ambientes: permite manter ambientes analíticos separados dos operacionais.
- 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ção | Descrição |
---|---|
Baseada em log binário | A 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:
sqlCREATE USER 'replicador'@'%' IDENTIFIED BY 'senha_forte';
GRANT REPLICATION SLAVE ON *.* TO 'replicador'@'%';
FLUSH PRIVILEGES;
Obtenha o status do binlog atual:
sqlFLUSH 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:
sqlSHOW 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
ouOrchestrator
. - 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.