A replicação do MySQL 5.5 master para um slave 5.1 é possível?

1

Versão resumida: A replicação do mestre 5.5 para um escravo 5.1 é possível?

Versão Longa: Fizemos uma atualização em larga escala de 5.0 para 5.5. Foi um longo processo se despejar os dbs de 400 gb e importá-los para 5.5.

5.5 a replicação parece estar completamente quebrada. Os mestres consistentemente interrompem, os escravos mantêm dis / reconectando e deixando conexões obsoletas binlog_dump (visíveis de show processlist). O mestre trava no desligamento até que eu tenha que matar quando o desligamento "desiste" depois de uma hora. Por último, recebe este tipo de erro diariamente "110423 13:55:48 [ERROR] SQL Escravo: Não foi possível executar o evento Delete_rows na tabela prod.site_iplist; Não foi possível encontrar o registro em 'site_iplist', Error_code: 1032; erro do manipulador HA_ERR_KEY_NOT_FOUND; o registro principal do evento mysql-bin.000385, end_log_pos 65644796, Error_code: 1032 "que é um bug que será corrigido no 5.5.12.

Isso foi muito decepcionante, já que nossa configuração 5.0 funcionou bem por 3 anos.

De qualquer forma, estou procurando passar para o 5.1.56 (que tem pelo menos 56 atualizações para um produto estável). O problema é que todos os meus bancos de dados são 5.5 agora.

É possível ter um mestre 5.5 e um escravo 5.1? O processo de migração é importar o banco de dados para 5.1 e, em seguida, habilitar a replicação, reprovar todos para 5.1 quando estiver sincronizado e, em seguida, fazer downgrade de todos os outros servidores 5.5 enquanto todos estiverem no banco de dados 5.1.

Será 5.5 master - > 5.1 trabalho escravo em tudo? Em caso afirmativo, funcionará com a replicação atual do modo MIXED? Eu teria que mudar isso para ser apenas uma declaração?

Obrigado!

    
por aspitzer 24.04.2011 / 16:40

2 respostas

5

O que você está tentando fazer geralmente não é suportado. Citação da Compatibilidade de replicação entre versões do MySQL docs:

MySQL supports replication from one major version to the next higher major version. For example, you can replicate from a master running MySQL 4.1 to a slave running MySQL 5.0, from a master running MySQL 5.0 to a slave running MySQL 5.1, and so on.

e

Replication from newer masters to older slaves may be possible, but is generally not supported.

Pode funcionar para essas versões, mas está longe de ser uma configuração recomendada. Minha opinião: não faça isso.

Leia também a Atualização de uma configuração de replicação

In other words, when upgrading to MySQL 5.5, the slaves must be MySQL 5.5 before you can upgrade the master to 5.5.

(e talvez este snippet, embora eu não ache que seja diretamente relevante se você reimportar para 5.1)

Downgrading a replication setup to a previous version cannot be done once you have switched from statement-based to row-based replication, and after the first row-based statement has been written to the binlog.

    
por 24.04.2011 / 17:13
3

Outra coisa a considerar é: O tamanho de um log binário vazio

MySQL 5.5: 107 bytes
MySQL 5.1: 106 bytes
MySQL 5.0 / 4.x / 3.x: 98 bytes

Para replicar de uma versão superior para uma versão inferior não é possível porque as informações de cabeçalho são deslocadas além do que a versão inferior pode ler.

Para replicar de uma versão inferior para uma versão superior é possível porque as informações de cabeçalho são compensadas por trás do que a versão alta pode ler.

    
por 26.04.2011 / 17:11