configuração master-slave do mysql com replicação síncrona

4

Eu tenho uma configuração muito escrava de mysql master- > slave entre dois servidores. O problema é que a replicação é assíncrona e isso pode causar problemas (mesmo em um link de baixa latência), se o servidor mestre travasse após um COMMIT antes que o encadeamento de replicação do escravo conseguisse buscar o último log de lixeira.

Existe alguma maneira de forçar o mysql a fazer commits síncronos para que a consistência dos dados seja garantida em um relacionamento slave mysql- >?

    
por imaginative 17.10.2009 / 03:34

3 respostas

2

A replicação normal do MySQL é necessariamente assíncrona, não há bloqueios distribuídos e o mestre nunca fica bloqueado esperando por escravos. Isso tem vantagens e desvantagens.

DRBD + heartbeat é a solução padrão para evitar a perda de dados no caso de perda permanente do mestre.

Você pode usar o DRBD + heartbeat abaixo da replicação normal, o que permite escalas de leitura ou réplicas fora do local, bem como uma durabilidade muito alta.

Como o DRBD faz replicação síncrona no nível do bloco, você precisa que a rede tenha latência muito baixa para obter um bom desempenho (o gigE é ok, as interconexões personalizadas de baixa latência são melhores se você tiver requisitos de desempenho muito altos).

    
por 17.10.2009 / 23:41
6

O MySQL 5.5 possui replicação semi-síncrona. Basicamente, garante que pelo menos um escravo tenha recebido a transação antes de ser confirmado.

link

    
por 31.10.2012 / 22:13
1

O MySQL Cluster oferece replicação síncrona, mas o mecanismo (NDBCLUSTER) não é adequado para muitos casos de uso.

O Continuent tinha uma solução de replicação síncrona (Sequoia), mas não é mais desenvolvida ativamente.

O padrão de fato é DRBD + Heartbeat, mas não é trivial para configurar.

Felicidades

    
por 17.10.2009 / 04:13