Em tempos, fiz um post sobre o Galera cluster, que é um mecanismo mais sofisticado e que se tem apostado mais.
No entanto uma simples replicação de dados entre um MASTER e SLAVE pede uma configuração simples.
Este SLAVE pode servir ter um servidor dedicado para leitura e queries de suporte a decisão, retirando esta carga do servidor MASTER, pode servir até mesmo Disaster Recovery.
Neste tipo de replicação, temos uma instância como MASTER e uma ou mais como SLAVE:
Vamos a configuração, esta configuração, obviamente, também funciona com o MySQL:
1) No MASTER temos que colocar, no mínimo os seguintes parâmetros (no my.cnf):
[mysqld]
log-basename=master
log-bin
binlog-format=row
server_id=1
2) Depois de reiniciar a instância, temos que criar o user para a replicação, no MASTER:
CREATE USER ‘replication_user’@’%’ IDENTIFIED BY ‘mariadb’;
GRANT REPLICATION SLAVE ON *.* TO ‘replication_user’@’%’;
3) Ver o “o ponto de partida” para que o SLAVE saiba a partir que que ponto deve aplicar as alterações no SLAVE:
SHOW MASTER STATUS; +--------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +--------------------+----------+--------------+------------------+ | log-bin.000001 | 310 | | | +--------------------+----------+--------------+------------------+
4) Caso seja necessário, (ou por exemplo, se a base de dados MASTER já tiver dados aplicacionais), deve se realizar uma exportação e importação de dados:
Para esta tarefa pode-se utilizar um backup/restore ou export/import de dados, para mais informação pode consultar o material deste Link.
5) No SLAVE configurar o processo de réplica:
CHANGE MASTER TO
MASTER_HOST=’192.168.56.200′,
MASTER_USER=’replication_user’,
MASTER_PASSWORD=’mariadb’,
MASTER_PORT=3306,
MASTER_LOG_FILE=’log-bin.000001′,
MASTER_LOG_POS=310,
MASTER_CONNECT_RETRY=10;
Os parâmetros MASTER_LOG_FILE e MASTER_LOG_POS são baseados no output do passo “3)“.
6) Iniciar o processo de replicação:
START SLAVE;
Depois o processo já está a funcionar, no SLAVE, podes validar o status como o comando:
SHOW SLAVE STATUS;