Replicação em banco de dados MySQL

Este artigo nos mostra como configurar dois servidores com MySQL atuando como master e slave para replicação de banco de dados. Em outras palavras, tudo o que acontece no servidor MySQL master acontecerá no MySQL slave.

[ Hits: 105.734 ]

Por: Marcelo Santos Araujo em 23/02/2004


Processo de replicação



Uma vez que temos o servidor e o cliente configurados, entre no servidor cliente e digite:

$ mysql -uleitor -pleitor

mysql> SLAVE START;
mysql> SHOW SLAVE STATUS;

No resultado do comando acima, procure por dois "YES" escritos em Slave I/O e Slave SQL. Caso os YES apareçam, o processo de replicação está funcionando!

Agora peça a lista de banco de dados:

mysql> SHOW DATABASES;

A base "replicacao" deverá aparecer.

Caso queira ver o mecanismo de replicação, crie uma tabela no master do tipo:

CREATE TABLE replica (
   id int(3) not null default ''
);
INSERT INTO replica VALUES (1);

Agora vá ao servidor slave e dê um SELECT na tabela replicacao.replica:

mysql> USE replicacao;
mysql> SELECT * FROM replicacao.replica;

Você deverá ver o conteúdo dos inserts que você deu na tabela no servidor master, portanto a replicação foi efetuada.

Comandos importantes:
  • SHOW SLAVE STATUS;
  • SLAVE START;
  • SLAVE STOP;

Não se esqueça:

No my.cnf master, habilitar os logs: log, log-bin, log-slave-updates e definir uma identificação única para a máquina: server-id=1.

No my.cnf slave, definir: master-user, master-password, master-host e identificação única: server-id=2.

Esquema da replicação


          MASTER             ----->            SLAVE
IP (XXX.XXX.XX.XXX, por exemplo)  (conexão por servidores mysqld)


Fim do artigo!

Marcelo Araújo

Página anterior    

Páginas do artigo
   1. Configuração do my.cnf no servidor
   2. Criando um usuário slave
   3. Configuração do my.cnf slave
   4. Processo de replicação
Outros artigos deste autor

Expressões regulares no PHP

Leitura recomendada

Gerenciando banco de dados com MySQL (Parte 1)

Blindando o MySQL: Configurações de segurança

Introdução ao MySQL

Store Procedures com Transaction no MySQL

SQL Dicas & Truques (versão 0.1)

  
Comentários
[1] Comentário enviado por gustavo_marcon em 23/02/2004 - 15:10h

Muito bom este artigo. Só fiquei c/ uma dúvida, todos os bancos de dados registrados no servidor A serão automaticamente replicados na máquina B?

[2] Comentário enviado por fabio em 23/02/2004 - 15:24h

Bom, me intrometendo, há como você escolhor no slave quais databases serão replicadas, para isso basta definir o parâmetro replicate-do-db na seção [mysqld] do my.conf slave:

replicate-do-db=meu_database1

Se quiser mais de um, basta ir adicionando as demais databases separadas por vírgula.

[]'s

[3] Comentário enviado por wilbil em 23/02/2004 - 17:05h

e bom lembrar que nao he pq vc tem um banco de dados replicado
que vc tem um sistema HA

lembrese se cair o serv A
o B so sera os backups sua rede contunuara sem mysql

tome cuidado na hora de implementar isso e sempre bom aprender como vc pode

transformar seu servidor slave em master
depois que vc arrumas o master o que vai acontecer quando entrarem os dois ao mesmo tempo

replicacao nao he HA

[4] Comentário enviado por mrluk em 23/02/2004 - 18:31h

o q eh HA, wilbil?

[5] Comentário enviado por jeffestanislau em 26/02/2004 - 18:55h

fiquei na dúvida como o mrluk, diz aí wilbil?

[6] Comentário enviado por wilbil em 22/09/2004 - 00:30h

HA = hight aplication

quando o mysql servidor cair o slave nao se inicia sozinho
e ocupa seu lugar

[7] Comentário enviado por alphainfo em 08/10/2004 - 00:41h

Ow galera,

o ponto levantado pelo wilbil é mto interessante! Esse esquema de replicar bancos confunde mto a galera, pq a primeira vista pensamos que o slave irá assumir na queda do master.

Estamos tentando implementar uma solução de Master/Slave aliada a solução de Alta disponibilidade (HA).

Assim que conseguirmos, postarei aqui no VOL um artigo sobre.

[]'s

Daniel Freire

[8] Comentário enviado por guigol em 23/05/2006 - 11:21h

Pessoal depois de muitas tentativas com o Slackware 10.2 descobri que no /etc/rc.d/rc.mysqld ele inicia por padrão com a opção:

SKIP="--skip-networking"

Resultando em não abrir a porta 3306 para acesso externo e/ou replicação das bases. É só tirar esta opção que ele abre as portas.

T+

Guilherme Guerreiro


[9] Comentário enviado por marcosge em 12/06/2006 - 00:01h

Bom pessoal, teoricamente eu consegui fazer tudo q se pede nesse artigo, mas eu não consigo ver as bases do master, estranho é que eu dou um show slave status no slave e ele me mostra os 2 yes. O que vocês poderiam me dizer?? será que estou esquecendo de algo??

Lembrando que criei o usuário slave, alterei os dois my.cnf..

Abraços,
Marcos Echevarria

[10] Comentário enviado por rhowmert em 27/07/2006 - 09:43h

Opa! Blz galera? Bom gente minha duvida é a seguinte. esta replicação pode até funcionar no caso do servidor travar ou sua conexão cair. Agora vamos supor que meu hd esteja com pau e esteja gravando na dados corrompidos. Esses dados serão replicados assim?
Tipo assim, teoricamente o mysql deveria armazenar em uma memória RAM e depois gravar os dados nos discos tanto dos master qto do slave.
Mas será que isso acontece? ou ele grava em um disco e depois copia pro outro?

[11] Comentário enviado por removido em 17/11/2008 - 09:29h

Bom dia gatecrasher! Eu gostaria de saber se essa replicação é feita em todas as databases do mysql ou apenas uma. Caso seja em apenas uma, sabe me dizer como posso fazer em várias?

[12] Comentário enviado por franciney em 15/10/2012 - 16:42h

Ola ,meu caro , neceesito de sua ajuda , andei verificando no mysqle vi os seguintes arquivos de configuração no /usr/share/mysqld :
config.hug.ini
config.medium.ini
config.small.ini

Gostaria de saber se é destes arquivos que vc esta falando , e tambem gostaria de saber se relmente tenho de leva-los para o /etc , pois o arquivo my.cnf esta no /etc/mysql ?


Att : Franciney Souza


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts