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.781 ]

Por: Marcelo Santos Araujo em 23/02/2004


Configuração do my.cnf slave



Para o estabelecimento da replicação, vamos pensar no seguinte esquema:

Maquina A  ---->   Maquina B
(Master)               (Slave)


server-id: slave deve ser diferente do server-id do master.

Configuração do my.cnf (master)


Relembrando:
  • Habilitar o log, log-bin, log-slave-updates.
  • Criação de um usuário com privilegio do tipo "REPLICATION SLAVE", com senha "slave" e nome de usuário "slave".


Configuração do my.cnf (slave)


Para a configuração, não se esqueça de parar o servidor, editar o my.cnf e depois iniciar novamente o servidor.

Abra o arquivo my.cnf e descomente ou acrescente as seguintes linhas na seção [mysqld]:

[mysqld]

...
# habilite o log
log
log-bin
master-host=(ip do master)
master-user=slave
master-password=slave
server-id=2
...

NOTA: O server-id é a identificação de cada servidor MySQL de sua rede, portando cada máquina deve ter um número único que a identifique, caso contrário o processo de replicação não irá funcionar.

Agora crie um usuário no seu MySQL client com o seguinte privilégio:

mysql> GRANT SELECT ON *.* TO leitor@'%' IDENTIFIED BY 'leitor';

Este é um usuário apenas com direito a leitura em todos os banco de dados.

Página anterior     Próxima página

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

MySQL Workbench: Criando um Schema do Zero

MariaDB + phpMyAdmin no Ubuntu 12.04 LTS

Slackware + MariaDB (MySQL): importando e exportando arquivos TXT

Instalando o MySQL Workbench - com solução de possível problemas de dependência

SQL Dicas & Truques (parte 2)

  
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