Replicação com o MySQL
Preparando a Máquina Escravo
Agora iremos preparar a máquina Escravo. Antes de qualquer passo, devemos restabelecer as bases de dados do servidor mestre na máquina escravo, através do dump que fizemos no primeiro passo. Para isso, usamos o seguinte comando:
Substitua o nome do arquivo pelo que você criou na etapa de preparação da máquina Mestre. Agora vamos alterar o arquivo my.cnf ou my.ini. Novamente, localizamos a seção [mysqld] dentro do arquivo. Porém os parâmetros agora são diferentes.
Chamo a atenção para a linha server-id= . Repare que no Escravo usei o número , enquanto no mestre usei o número 1. Se tivéssemos uma terceira máquina replicando dados, ela deveria ser configurada com server-id=3. Estes números não devem se repetir, e são usados para o MySQL se orientar entre as replicações.
Os parâmetros master-user e master-password são os mesmos das configurações feitas no Mestre. Ou seja, no meu caso, replica e senhareplica. O último parâmetro é o comando replicatedo-db. Esse parâmetro especifica qual a base de dados que queremos replicar. Se tivéssemos mais bases de dados sendo replicadas, devemos incluí-las da seguinte forma:
Caso queira replicar todas as bases do servidor e não apenas algumas, basta não especificar a linha replicate-do-db, e o MySQL entenderá que todas as bases devem ser replicadas. Após esse passo, entre no prompt do mysql da maquina Escravo e digite:
Esse comando serve para deletar os logs binários já existentes, para evitar inconsistência com os logs binários já existentes no Escravo. Com isso, nossa configuração de replicação está encerrada. Não devemos nos esquecer de reiniciar o serviço do mysql no Escravo. Assim que for reiniciado, ele tentará se conectar ao Mestre, conforme especifi-cado no arquivo my.cnf ou my.ini. Para verificar se está tudo bem no seu escravo, e se os dados estão realmente sendo replicados, basta usar o comando:
Repare que na saída do comando será mostrado uma coluna chamada “Slave Running”, cujo conteúdo deve ser “yes”. Caso haja algum problema, verifique as permissões da conta replica. Ela é geralmente culpada pela maioria dos problemas de replicação. Outra fonte de informação interessante é o log de erro do MySQL, localizado no linux geralmente no diretório /var/lib/mysql, e no windows no diretório onde ele foi instalado.
Caso tenha configurado um endereço IP incorretamente, o Escravo obviamente não conseguirá se conectar ao Mestre. Para consertar o problema, reconfigure o arquivo my.cnf ou my.ini com o IP correto, e reinicie o escravo.
Este foi meu primeiro artigo e espero ter sido de bom agrado a todos.
Um abraço...
Agora iremos preparar a máquina Escravo. Antes de qualquer passo, devemos restabelecer as bases de dados do servidor mestre na máquina escravo, através do dump que fizemos no primeiro passo. Para isso, usamos o seguinte comando:
mysql -u <USUÁRIO> -p < c:\meu_arquivo.sql
Substitua o nome do arquivo pelo que você criou na etapa de preparação da máquina Mestre. Agora vamos alterar o arquivo my.cnf ou my.ini. Novamente, localizamos a seção [mysqld] dentro do arquivo. Porém os parâmetros agora são diferentes.
server-id = 2 master-host = Endereço IP do servidor MESTRE master-user = replica master-password = senhareplica replicate-do-db = minha_database1
Chamo a atenção para a linha server-id= . Repare que no Escravo usei o número , enquanto no mestre usei o número 1. Se tivéssemos uma terceira máquina replicando dados, ela deveria ser configurada com server-id=3. Estes números não devem se repetir, e são usados para o MySQL se orientar entre as replicações.
Os parâmetros master-user e master-password são os mesmos das configurações feitas no Mestre. Ou seja, no meu caso, replica e senhareplica. O último parâmetro é o comando replicatedo-db. Esse parâmetro especifica qual a base de dados que queremos replicar. Se tivéssemos mais bases de dados sendo replicadas, devemos incluí-las da seguinte forma:
server-id = 2 master-host = Endereço IP do servidor MESTRE master-user = replica master-password = senhareplica replicate-do-db = minha_database1 replicate-do-db = minha_database2 replicate-do-db = minha_database3
Caso queira replicar todas as bases do servidor e não apenas algumas, basta não especificar a linha replicate-do-db, e o MySQL entenderá que todas as bases devem ser replicadas. Após esse passo, entre no prompt do mysql da maquina Escravo e digite:
mysql> RESET SLAVE;
Esse comando serve para deletar os logs binários já existentes, para evitar inconsistência com os logs binários já existentes no Escravo. Com isso, nossa configuração de replicação está encerrada. Não devemos nos esquecer de reiniciar o serviço do mysql no Escravo. Assim que for reiniciado, ele tentará se conectar ao Mestre, conforme especifi-cado no arquivo my.cnf ou my.ini. Para verificar se está tudo bem no seu escravo, e se os dados estão realmente sendo replicados, basta usar o comando:
mysql> SHOW SLAVE STATUS;
Repare que na saída do comando será mostrado uma coluna chamada “Slave Running”, cujo conteúdo deve ser “yes”. Caso haja algum problema, verifique as permissões da conta replica. Ela é geralmente culpada pela maioria dos problemas de replicação. Outra fonte de informação interessante é o log de erro do MySQL, localizado no linux geralmente no diretório /var/lib/mysql, e no windows no diretório onde ele foi instalado.
Caso tenha configurado um endereço IP incorretamente, o Escravo obviamente não conseguirá se conectar ao Mestre. Para consertar o problema, reconfigure o arquivo my.cnf ou my.ini com o IP correto, e reinicie o escravo.
Este foi meu primeiro artigo e espero ter sido de bom agrado a todos.
Um abraço...
Cara, parabéns!! Um tema muito pouco abordado, mas de suma importância. Nem parece que foi o primeiro artigo. Continue assim!!
31/07/2007 4:10am
(~17 anos atrás)
Esse é um assunto muito interessante, e o que você abordou funciona.. mas poderia ter ido um pouco mais profundo, explicado mais detalhes de todo o processo e tals.
Abraços!