A replicação de banco de dados é uma estratégia essencial para garantir alta disponibilidade, melhorar desempenho e redundância e evitar perda de dados em caso de falhas. Implementando failover automático, é possível minimizar tempo de inatividade e manter continuidade operacional.
Neste artigo, abordaremos estratégias de replicação em MySQL e PostgreSQL, garantindo resiliência para bancos de dados empresariais.
1. O Que é Replicação de Banco de Dados e Por Que Utilizá-la?
A replicação de banco de dados permite copiar e sincronizar dados entre múltiplos servidores para garantir redundância e escalabilidade.
✅ Vantagens:
- Alta Disponibilidade: O banco de dados continua operacional mesmo em caso de falhas;
- Redundância de Dados: Cópias são mantidas em servidores secundários;
- Melhoria de Performance: Permite balanceamento de carga entre servidores;
- Failover Automático: Redirecionamento imediato em caso de falha no servidor primário.
💡 Recomendação: Para um ambiente confiável, hospede seu banco de dados em um Servidor VPS da OTH HOST e obtenha redundância com baixo tempo de resposta.
2. Principais Estratégias de Replicação de Banco de Dados
2.1 Replicação Master-Slave (Primário-Secundário)
- Modelo tradicional, onde um servidor master recebe todas as escritas e os slaves apenas replicam os dados.
- Vantagem: Redundância e performance.
- Desvantagem: O slave não aceita escrita, apenas leitura.
2.2 Replicação Master-Master
- Permite que dois ou mais servidores aceitem leituras e escritas.
- Vantagem: Alta disponibilidade e failover eficiente.
- Desvantagem: Pode ocorrer conflito de dados.
2.3 Replicação Assíncrona vs. Sincronizada
- Sincronizada: O slave confirma a escrita antes de prosseguir.
- Assíncrona: O master segue o processamento sem esperar a confirmação do slave.
- Melhor uso: Sincronizada para integridade, assíncrona para performance.
✅ Melhor abordagem: Para aplicações críticas, use replicação sincronizada. Para aplicações escaláveis, prefira replicação assíncrona.
3. Configurando Replicação no MySQL
3.1 Instalando o MySQL em Ambos os Servidores
sudo apt update && sudo apt install mysql-server -y
3.2 Configurando o Servidor Master
Edite o arquivo my.cnf
:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Adicione as seguintes configurações:
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_do_db=meu_banco
Reinicie o MySQL:
sudo systemctl restart mysql
Crie um usuário replicador:
CREATE USER 'replicador'@'%' IDENTIFIED BY 'senha_forte';
GRANT REPLICATION SLAVE ON *.* TO 'replicador'@'%';
FLUSH PRIVILEGES;
3.3 Configurando o Servidor Slave
Edite my.cnf
no slave:
[mysqld]
server-id=2
relay_log=mysql-relay-bin
Reinicie o MySQL:
sudo systemctl restart mysql
Configure a replicação no slave:
CHANGE MASTER TO MASTER_HOST='IP_DO_MASTER',
MASTER_USER='replicador', MASTER_PASSWORD='senha_forte',
MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4;
START SLAVE;
Verifique o status da replicação:
SHOW SLAVE STATUS\G;
Agora, o servidor slave está replicando os dados do master.
4. Configurando Replicação no PostgreSQL
4.1 Configurando o Servidor Primário
Edite o arquivo postgresql.conf
:
sudo nano /etc/postgresql/13/main/postgresql.conf
Adicione:
wal_level = replica
archive_mode = on
max_wal_senders = 3
hot_standby = on
Edite pg_hba.conf
para permitir conexões do slave:
host replication replicador 192.168.1.2/32 md5
Reinicie o PostgreSQL:
sudo systemctl restart postgresql
Crie um usuário replicador:
CREATE USER replicador REPLICATION LOGIN ENCRYPTED PASSWORD 'senha_forte';
4.2 Configurando o Servidor Secundário
Pare o PostgreSQL:
sudo systemctl stop postgresql
Clone os dados do servidor primário:
pg_basebackup -h 192.168.1.1 -U replicador -D /var/lib/postgresql/13/main -P -R
Reinicie o PostgreSQL:
sudo systemctl start postgresql
Agora, o servidor secundário estará sincronizado com o primário.
5. Implementando Failover Automático
Para evitar tempo de inatividade, utilize ferramentas como Patroni (PostgreSQL) ou MHA (MySQL).
✅ Failover com Patroni (PostgreSQL):
- Detecta falhas automaticamente;
- Promove um novo líder caso o primário falhe.
✅ Failover com MySQL MHA:
- Permite que um slave se torne master automaticamente.
sudo apt install mha4mysql-node mha4mysql-manager -y
Com isso, o sistema pode alternar automaticamente entre servidores em caso de falha.
6. Conclusão
Implementar replicação de banco de dados garante alta disponibilidade e integridade dos dados. As estratégias abordadas neste artigo ajudam a evitar falhas críticas e garantem continuidade operacional.
🚀 Quer um servidor otimizado para replicação? Confira os Servidores VPS da OTH HOST e melhore a segurança e desempenho dos seus bancos de dados! 🔄🔒