MySQL 5.6 replicar mestre ao vivo SEM tempo de inatividade

1

Seguindo as etapas para replicar um servidor existente, parece que a maioria dos métodos confia na capacidade de parar completamente o servidor mestre ou, pelo menos, evitar que ele grave usando flush tables with read lock; , o que efetivamente cria tempo de inatividade, pois muitos aplicativos não podem responder corretamente incapaz de gravar no banco de dados.

Existe uma maneira segura de replicar um mestre para um escravo, garantindo tempo de inatividade zero e completa sincronização das informações do banco de dados?

No nosso cenário, temos um mestre e uma vez escravo e ambos funcionaram bem. Um bug do MySQL durante a atualização de 5.5 para 5.6 fez com que o escravo ficasse um pouco fora de sincronia e agora queremos recriar seus bancos de dados completamente. Por enquanto, quando recebemos alguns erros esporádicos, pulamos eles usando STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE; , mas isso significa que a replicação não é 100% como o mestre.

Obrigado

    
por Collector 11.02.2015 / 13:40

2 respostas

1

Apesar de ser uma questão antiga, mas se você ainda estiver procurando resposta, tente percona xtrabackup . Se você tiver tabelas MyISAM, use a opção --rsync. Com isso, conseguimos um despejo quase sem interrupções (o bloqueio levou cerca de 5 a 10 segundos para o DB em torno de 1 Gb).

    
por 16.07.2015 / 21:54
0

Existe. Quando todos os mecanismos de banco de dados são InnoDB e você especificou a opção --single-transaction . Dessa forma, flush tables with read lock; ou --lock-all-tables não são necessários.

Caso contrário, eu acho, não há outras opções. Minhas condolências.

Basicamente, aumentar o contador de pulos de escravo é ruim, a menos que você esteja absolutamente certo de que é seguro (por exemplo, ao replicar usuários perdidos grant declarações ou coisas assim).

    
por 11.02.2015 / 14:00