Home Tutoriais Banco de Dados Usando o replication master-slave no MySQL


Neste artigo, vou mostrar como criar uma replicação de servidores MySQL. Vale lembrar que replicação não é uma forma de backup, pois caso algo dê errado no banco de dados principal, o mesmo será clonado nos escravos.

Fiz tudo baseado no CentOS 6.0 e testado entre duas máquinas virtuais. Vamos partir do pressuposto de que o MySQL esteja instalado em ambas as máquinas. Lembre-se, também, de habilitar no firewall a comunicação entre os servidores.

Vamos assumir o seguinte fato:

  • Master Server: 10.1.100.1;
  • Slave Server: 10.2.200.2;
  • MySQL Data path: /var/lib/mysql;
  • MySQL slave user named slave_user.

Agora, vamos editar no servidor master o arquivo /etc/my.cnf

# [mysqld] section
datadir = /var/lib/mysql
server-id = 1
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/var/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

Reinicie o servidor para que as modificações sejam carregadas:

$ sudo service mysqld restart

Agora, vamos editar no servidor slave o arquivo /etc/my.cnf:

# [mysqld] section
datadir = /var/lib/mysql
server-id = 2
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/var/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info

Repita o procedimento de reinicio do servidor igual no master. Então, vamos criar um usuário no servidor master que terá autoridade para enviar a replicação do banco de dados:

$ mysql -u root -p
mysql> STOP SLAVE;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'slave_password';
mysql> FLUSH PRIVILEGES;

Feito isso, vamos testar se a replicação funciona desse ponto de partida. Pegaremos a localização de onde a replicação deve começar:

mysql> USE Any_database_name;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |   451228 |              |                  |
+------------------+----------+--------------+------------------+
1 row IN SET (0.00 sec)

Agora, vamos fazer um dump no servidor master e inseri-lo no servidor slave, para depois fazer outro dump.

mysqldump -u root --all-databases --single-transaction --master-data=1 > ~/db.sql

Enviando para o slave:

scp root@10.1.100.1:~/db.sql root@10.2.200.2:~/db.sql

Inserindo o dump no slave:

$ mysql -u root -p < ~/db.sql

Ativando a replicação no slave:

mysql> CHANGE MASTER TO MASTER_HOST='10.1.100.1', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password',
MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=451228;
mysql> START SLAVE;
mysql> SHOW SLAVE STATUSG;

Agora, você só precisa fazer os testes e conferir se a replicação funciona!

Fonte: http://imasters.com.br/artigo/22821/mysql/usando-o-replication-master-slave-no-mysql/

   

Leave a Reply

This blog is kept spam free by WP-SpamFree.