segunda-feira, 27 de abril de 2009

Replicação mysql

Replicação mysql

REPLICAÇÃO ENTRE SERVIDORES MYSQL LINUX REDHAT ENTERPRISE 5
VERSÃO: Server version: 5.0.45-log Source distribution:


Cenário:

















Configurando o Master:
1º passo: logue no servidor que será o master:
2º passo: após logar execute: mysql -u usuario para ir ao prompt:
3º passo: crie o usuario com o seguinte comando.

mysql> GRANT REPLICATION SLAVE ON *.* TO 'usuario'@'%.mydomain.com' IDENTIFIED BY 'senha';

4º passo: agora iremos configurar o my.cnf atribuindo as seguintes configurações:

[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=especifique a tabela que você quer fazer a sincronização

OBS: Se a configuração do seu banco for
InnoDB, para garantir a durabilidade e consistência dos dados use:
adicione as linhas no my.cnf , ficando assim:
[mysqld]
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog-do-db=test

Configurando o Slave:
1º passo: agora iremos configurar o my.cnf atribuindo as seguintes configurações:

[mysqld]
server-id=2

Travando as tabelas no servidor Master:
1º passo: agora iremos travar as tabelas no servidor Master coma o seguinte comando
2º passo: mysql -u usuário para ir ao prompt:
3ºpasso: OBS lembrando que o banco é InnoDB deve-se executar o comando COMMIT após
executar o comando abaixo:

mysql> FLUSH TABLES WITH READ LOCK;
mysql> COMMIT;

4º passo: restart o servidor mysql do Master

Testanto a ativação no servidor Master
:
1º passo: mysql -u usuário para ir ao prompt:

2ºpasso: Use o comando SHOW MASTER STATUS para ver o binary log corrente que foi ativado no master:

mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+

Agora iremos gerar um backup do banco que está no Master e importá-lo no Slave:
1º passo: execute no console o seguinte comando abaixo:

mysqldump --all-databases --lock-all-tables > dump.sql
OU
mysqldump -u usuario nome_do_bando > dump.sql


2º passo: execute no console do servidor Slave seguinte comando abaixo:

mysqldump -u usuario nome_do_banco < dump.sql
3º passo: execute no console do servidor Master o seguinte comando abaixo:

mysql> UNLOCK TABLES;

Efetuando a comunicação do Slave com o Master:

1º passo: mysql -u usuário para ir ao prompt:
CHANGE MASTER TO
MASTER_HOST='ip do servidor master',
MASTER_USER='o usuário criado na configuração do master',
MASTER_PASSWORD='a senha informada para o usuário na configuração do master',
MASTER_LOG_FILE='mysql-bin.003',coloque aqui o nome do file do bin log
OBS: na sessão do manual acima: Testanto a ativação no servidor Master:
mysql >
SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
MASTER_LOG_POS=73; coloque aqui a posição do log conforme mostrado acima.

Agora iremos iniciar o mysql slave no servidor Slave:
1º passo: execute no console do servidor Slave o seguinte comando abaixo:
mysql>
START SLAVE;

Pronto, a sua replicação já está funcionando: basta executar o comando abaixo no servidor Slave.
[root@localhost ~]# mysql -u root
mysql> show slave status\G
O retorno será este.
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.1.60
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 860
Relay_Log_File: mysqld-relay-bin.000003
Relay_Log_Pos: 997
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 860
Relay_Log_Space: 997
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)

Observe as linhas em vermelho.

Testando a replicação dos dados:
Insira qualquer registro ou até mesmo crie uma tables na banco de dados sincronizado, no servidor MASTER.
Vá agora no servidor SLAVE e veja se atualizou a tabela criada no servidor master.
Se tiver atualizado BINGO.
Parabéns você acabou de criar a sua replicação do Mysql;

Nenhum comentário:

Postar um comentário