Eu configurei uma replicação mestre-escravo com mysql 5.7 e GTID.
O GTID deve ser mais "seguro" do que a maneira mais antiga, em que cada instrução sozinha era replicada, certo?
Mas ao replicar com GTID posso verificar a consistência dos dados no escravo apenas verificando SHOW SLAVE STATUS\G
?
Ou preciso fazer a soma de verificação de cada linha em cada tabela para garantir que tudo seja replicado corretamente?
Antes de responder sua pergunta, algumas questões de terminologia...
GTID
identifica exclusivamente cada coisa replicada. Esta é uma melhoria em relação à tecnologia de replicação anterior -- mas principalmente quando você tem várias máquinas e precisa se recuperar de algum tipo de falha. Ajuda a automatizar as coisas.bin_log_format
= STATEMENT ou ROW ou MIXED refere-se ao que é transferido do Mestre para o Escravo. STATEMENT (SBR) é a maneira antiga; ROW (RBR) é o novo caminho. Há muitas razões sutis pelas quais o RBR é 'melhor'.SHOW SLAVE STATUS
fornece, entre outras coisas, se a replicação parou ou não devido a algum erro. Ele relata uma medida grosseira de obsolescência (Seconds_Behind_Master
), mas não de "consistência" (se as mudanças chegaram e foram aplicadas corretamente).Você não precisa de uma soma de verificação em cada linha. Seria desajeitado para você adicionar tal. A camada de rede (TCP/IP, etc) faz a soma de verificação para 'garantir' a entrega e validar o conteúdo da entrega.
Se você quiser fazer sua própria verificação de consistência, recomendo o
pt-table-checksum
. Ele cuida de muitos casos finais que não são óbvios para alguém que está começando a fazer a verificação por conta própria.