Sunteți pe pagina 1din 2

MySQL

Usando o replication masterslave no MySQL


Quinta-feira, 29/03/2012 s 10h15, por Joo Vctor Rocon Maia

Neste artigo, vou mostrar como criar uma replicao de servidores MySQL. Vale lembrar que replicao no 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 mquinas virtuais. Vamos partir do pressuposto de que o MySQL esteja instalado em ambas as mquinas. Lembre-se, tambm, de habilitar no firewall a comunicao 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 modificaes 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. Ento, vamos criar um usurio no servidor master que ter autoridade para enviar a replicao 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 replicao funciona desse ponto de partida. Pegaremos a localizao de onde a replicao deve comear:
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 replicao 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 STATUS\G;

Agora, voc s precisa fazer os testes e conferir se a replicao funciona!

S-ar putea să vă placă și