Mysql 5 e Seu Bug de Replicação – Error_code: 1535

Se por um acaso em sua replicação você se deparar com o erro 1535:

mysql> SHOW SLAVE STATUS\G
Last_Errno: 1535
Last_Error:Table definition on master and slave does not match: Column ### type mismatch - received type 0, table_name has type 246, Error_code: 1535

Acredite, você acaba de se deparar com um BUG de atualização de versão do MySql. Isso acontece porque o campo DECIMAL na versão 4 tem seu formato interno= 0, e a partir da versão 5 seu formato interno mudou para 246,  ao atualizar o MySql de 4 para 5 esse formato não é migrado.

No meu caso eu tenho um servidor MASTER que era 4 e foi atualizado para 5, e o SLAVE  foi instalado já com a versão 5. quando a replicação é ativada, os formatos do campo DECIMAL conflitam e nesse momento acontece o erro.

Para resolver esse problema, é necessário que o formato interno dos campos DECIMAL no MASTER seja igual a 246. Nesse caso, basta usar o ALTER TABLE no campo DECIMAL da tabela no servidor MASTER, os formatos ficaram iguais nas 2 pontas e esse erro não mais acontece.

Porém a tabela já tem dados e a replicação esta ativa, enquanto o problema não é resolvida a replicação fica parada. Por isso é necessário parar a replicação, resolver o problema do formato e depois reativar a replicação:

SLAVE

mysql> stop slave;
mysql> reset slave;

MASTER

mysql> ALTER TABLE table_name MODIFY COLUMN column DECIMAL;

Agora, para reativar a replicação, precisamos do numero do binário e da posição:

mysql> show master status;
+-------------------------------+----------+--------------+------------------+
| File                          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------------------+----------+--------------+------------------+
| SERVER1-mysql-bin.005435      |  38502167 |              |                 |
+-------------------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

SLAVE

mysql> CHANGE MASTER TO
         MASTER_HOST='SERVER1',
         MASTER_USER='repl',
         MASTER_PASSWORD='XXXXXXX',
         MASTER_PORT=3306,
         MASTER_LOG_FILE='mysql-bin.005435',
         MASTER_LOG_POS=38502167
;
mysql> start slave;
mysql> SHOW SLAVE STATUS\G

E é isso galera espero que possa ajudar como me ajudou !!!!

Referencia: mysql.com

Kenia Milene

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s