Pergunta

Ok, eu estou correndo uma configuração com um único mestre e um número de escravos. Todas as gravações passar pelo mestre e são replicadas para baixo para os escravos que são utilizados estritamente para lê.

Agora eu tenho um procedimento armazenado (não função), que é chamado por um gatilho em uma inserção. De acordo com os documentos MySQL, para gatilhos replicação do registo da chamada para o gatilho enquanto procedimentos armazenados efectivamente registar o resultado do procedimento armazenado.

Então, minha pergunta é, quando o gatilho é demitido, vai replicar tanto o gatilho e os resultados do procedimento que chama o gatilho (resultando no procedimento efetivamente sendo executado duas vezes)? Ou ele vai simplesmente replicar o gatilho ter os escravos re-executar o procedimento armazenado por conta própria?

Graças

Foi útil?

Solução

No MySQL 5.0 (e MySQL 5.1 com a declaração com base log binário), apenas a consulta chamando é registrado, por isso, no seu caso, o INSERT seria registrado.

No escravo, a inserção será executado e, em seguida, o gatilho será re-executar no slave. Assim, as necessidades de gatilho de existir no slave, e supondo que ele, então ele vai ser executado exatamente da mesma maneira como o mestre.

No MySQL 5.1, há o registo baseados em linha binário, que irá registrar apenas as linhas que está sendo mudado, assim que o gatilho não seria no escravo movidas a re, mas todas as linhas que mudaram ainda seria propagada.

Outras dicas

Além de excelente resposta de Harrison:

  • Assumindo que os bancos de dados estão em sincronia (esquema, dados, mesma versão), para começar, ele deverá funcionar
  • Se isso não acontecer, então pode ser que você está usando algo não determinista em suas consultas ou gatilho. Fix isso.
  • Independentemente de como você usar a replicação, você precisa ter o controlo para verificar se os escravos estão sempre em sincronia. Sem qualquer monitoramento, eles vão se tornar fora de sincronia (sutilmente) e você não vai notar. MySQL não tem built-in automático recurso para verificar este ou corrigi-lo.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top