Após a replicação completa existe um medo muito grande em todos nós... e se minha replica não é idêntica a ao servidor principal, e seu meu slave escorregou em alguma chave como eu checo isso? com o eu arrumo isso? A um tempão atrás eu havia lido isso no livro High Performance Mysql *O'Reilly* , quando fiz minha primeira replicação, porém nesta nova implantação checando na mão eu notei uma escorregadinha do slave e pensei... XI... F****!!
Com uma rápida busca no gigante eu achei um tutorial legal usando a mesma ferramenta utilizada no livro acima o Percona, o tutorial tem um nome bem sugestivo "Replicação com Checksum - Mysql Replicações a Prova de Bala"
Adquirindo o Percona
Vá ao site do fabricante no www.percona.com
Vá na aba software
Vá em percona toolkit for MySql
ou clique a seguir: http://www.percona.com/software/percona-toolkit
Instalando o Percona
Você possui a opção de baixar ele em rpm, deb, tar.gz, por estar utilizando Debian em tudo utilizei o deb porém não é complexo utilizar os outros processos.dpkg -i percona-toolkit_2.2.7_all.deb
Caso falte alguma dependência basta copiar ele e colocar na frente do "apt-get install" a maioria delas são relacionadas ao perl
Utilizando o Percona para Checar a Integridade
No MASTER rode o seguinte comando, ele irá checar a sua tabela inteira.
$pt-table-checksum --replicate=test.checksum --create-replicate-table --databases=TABELA localhost
Agora que temos todos os checksum das tabelas vamos checar o SLAVE para ver se ele não
escorregou rode novamente no MASTER o comando abaixo:
$pt-table-checksum --replicate=test.checksum --replicate-check-only --databases=TABELA localhost
Se não tiver saída nenhuma quer dizer que esta tudo OK!!! se não......
ReSync do Slave
Agora os passo são mais simples porém demorados.Master
Vamos reiniciar o master para que ele comece tudo do zero.
mysql> RESET MASTER;
Query OK, 0 ROWS affected (0.14 sec)
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 ROWS affected (0.03 sec)
mysql> SHOW MASTER STATUS\G
*************************** 1. ROW ***************************
File: mysql-bin.000001
POSITION: 106
Binlog_Do_DB:
Binlog_Ignore_DB:
1 ROW IN SET (0.00 sec)
Faça novamente o dump da tabela inteira
mysqldump -u root -p TABELA > TABELA.sql
Envie o para o Slave o TABELA.sql
Slave
Apague TODA a informação da TABELA no slave e carrege o TABELA.sql
mysqldump -u root -p TABELA < TABELA.sqlResete as configurações do SLAVE
mysql> STOP SLAVE;
Query OK, 0 ROWS affected (0.14 sec)
mysql> RESET SLAVE;
Query OK, 0 ROWS affected (0.18 sec)
mysql> CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=106;
Query OK, 0 ROWS affected (1.08 sec)
mysql> START SLAVE;
Query OK, 0 ROWS affected (0.08 sec)mysql> SHOW SLAVE STATUS \G;
Query OK, 0 ROWS affected (0.02 sec)
Master
Libere as tabelas no MASTER;
mysql> UNLOCK TABLES;
Bibliografia
http://www.percona.comhttp://www.iheavy.com/2012/04/26/bulletproofing-mysql-replications-with-checksums/
http://www.percona.com/doc/percona-toolkit/2.2/

Nenhum comentário:
Postar um comentário