Banco de Dados · 3 min read · Dec 23, 2025
Como Configurar Replicação de Banco de Dados No MySQL
Este é um “copiar e colar” Como Fazer!
A maneira mais fácil de seguir este tutorial é usar um cliente de linha de comando/clientes SSH (como
PuTTY
para Windows) e simplesmente copiar e colar os comandos (exceto onde você deve fornecer suas próprias informações, como endereços IP, nomes de host, senhas,…). Isso ajuda a evitar erros de digitação.
Como Configurar Replicação de Banco de Dados No MySQL
Versão 1.1
Autor: Falko Timme
Última edição: 14/01/2006
Este tutorial descreve como configurar a replicação de banco de dados no MySQL. A replicação do MySQL permite que você tenha uma cópia exata de um banco de dados de um servidor mestre em outro servidor (escravo), e todas as atualizações no banco de dados no servidor mestre são imediatamente replicadas para o banco de dados no servidor escravo, de modo que ambos os bancos de dados estejam sincronizados. Esta não é uma política de backup porque um comando DELETE emitido acidentalmente também será executado no escravo; mas a replicação pode ajudar a proteger contra falhas de hardware.
Neste tutorial, mostrarei como replicar o banco de dados exampledb do mestre com o endereço IP 192.168.0.100 para um escravo. Ambos os sistemas (mestre e escravo) estão executando Debian Sarge; no entanto, a configuração deve se aplicar a quase todas as distribuições com pouca ou nenhuma modificação.
Ambos os sistemas têm o MySQL instalado, e o banco de dados exampledb com tabelas e dados já existe no mestre, mas não no escravo.
Quero dizer primeiro que esta não é a única maneira de configurar tal sistema. Existem muitas maneiras de alcançar esse objetivo, mas este é o caminho que eu sigo. Não dou nenhuma garantia de que isso funcionará para você!
1 Configurar O Mestre
Primeiro, precisamos editar /etc/mysql/my.cnf. Precisamos habilitar a rede para o MySQL, e o MySQL deve escutar em todos os endereços IP, portanto, comentamos essas linhas (se existirem):
| #skip-networking #bind-address = 127.0.0.1 |
Além disso, precisamos informar ao MySQL para qual banco de dados ele deve escrever logs (esses logs são usados pelo escravo para ver o que mudou no mestre), qual arquivo de log ele deve usar, e precisamos especificar que este servidor MySQL é o mestre. Queremos replicar o banco de dados exampledb, então colocamos as seguintes linhas em /etc/mysql/my.cnf:
| log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb server-id=1 |
Então, reiniciamos o MySQL:
/etc/init.d/mysql restart
Em seguida, fazemos login no banco de dados MySQL como root e criamos um usuário com privilégios de replicação:
mysql -u root -p
Digite a senha:
Agora estamos no shell do MySQL.
GRANT REPLICATION SLAVE ON . TO ‘slave_user’@’%’ IDENTIFIED BY ‘
FLUSH PRIVILEGES;
Em seguida (ainda no shell do MySQL), faça isso:
USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
O último comando mostrará algo como isto:
| +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | mysql-bin.006 | 183 | exampledb | | +---------------+----------+--------------+------------------+ 1 row in set (0.00 sec) |
Anote essas informações, precisaremos delas mais tarde no escravo!
Então saia do shell do MySQL:
quit;
Existem duas possibilidades para obter as tabelas e dados existentes do exampledb do mestre para o escravo. A primeira é fazer um dump do banco de dados, a segunda é usar o comando LOAD DATA FROM MASTER; no escravo. A última tem a desvantagem de que o banco de dados no mestre ficará bloqueado durante essa operação, então se você tiver um banco de dados grande em um sistema de produção de alto tráfego, isso não é o que você deseja, e eu recomendo seguir o primeiro método nesse caso. No entanto, o último método é muito rápido, então descreverei ambos aqui.
Se você quiser seguir o primeiro método, então faça isto:
mysqldump -u root -p
Isso criará um dump SQL de exampledb no arquivo exampledb.sql. Transfira este arquivo para o seu servidor escravo!
Se você quiser seguir o caminho do LOAD DATA FROM MASTER;, então não há nada que você precise fazer agora.
Finalmente, precisamos desbloquear as tabelas em exampledb:
mysql -u root -p
Digite a senha:
UNLOCK TABLES;
quit;
Agora a configuração no mestre está concluída. Vamos para o escravo…
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.