Dois-je filtrer le tableau Percona.Checksums en réplication pour une utilisation avec Pt-Table-Checksum?
-
30-10-2019 - |
Question
J'ai configuré la réplication MySQL, un maître et un esclave. Maintenant, je commence juste à vérifier les données d'intégrité des deux côtés en utilisant pt-table-checksum
. Magnifique outil pour détecter les modifications ou dériver sur l'esclave.
De ce que je comprends de son Documentation, il fonctionne sur le maître, écrit des sommes de contrôle au percona.checksums
table et s'exécute de manière similaire sur les esclaves connectés (détectés automatiquement) à l'aide d'une connexion MySQL distante régulière. Cependant, le percona.checksums
La table est également reproduite! Si les données diffèrent sur l'esclave, les sommes de contrôle du maître peuvent être écrasées sur l'esclave et ne pas être détectées.
Maintenant, je crains que cela ne soit à l'objet de mon observé faux négatifs pour détecter les changements.
Fait pt-table-checksum
faire mettre en place des garanties pour empêcher la réplication sur le percona.checksums
table?
- Si oui, comment cela fonctionne-t-il? (Pour autant que je puisse voir, on ne peut pas modifier des filtres de réplication comme celui-ci) Cela peut m'aider à déterminer une autre raison de mes observations (voir ci-dessous).
- Sinon, comment puis-je être sûr que le contenu de ce tableau reflète des sommes de contrôle de ce serveur spécifique? Dois-je mettre en place un filtre de réplication? Ceci est en fait découragé par la documentation de la boîte à outils de Percona.
Observations réelles
J'ai vu un événement dans ma configuration de test dans laquelle la course en quelque sorte pt-table-checksum
n'a pas détecté le changement délibérément effectué sur l'esclave. L'inspection du contenu du tableau de somme de contrôle a montré les sommes de contrôle du maître. Exécuter l'outil sur l'esclave lui-même a montré que les sommes de contrôle auraient dû être différentes! Cela me fait croire qu'il y a une condition de course en cours et la raison pour laquelle cela est difficile à reproduire.
Une autre hypothèse
Supposons que l'esclave ait dérivé et que la connexion réseau est en panne pendant un court moment pt-table-checksum
. Il montrera qu'il n'est pas en mesure de se connecter à l'esclave dans le stderr
sortie, mais pas échouer. Peu de temps après, le réseautage est restauré et la réplication reprend, en copie sur le contenu du maître de la table percona.checksums
. Puis courir pt-table-checksum --replicate-check-only
, fournira de faux négatifs. Suis-je ici? Si oui, comment puis-je empêcher cela dans ce cas?
Il s'agit d'un serveur / client MySQL ordinaire utilisant la boîte à outils de Percona avec.
Versions:
- PT-Table-Checksum 2.1.4
- Client MySQL: 5.5.24
- MySQL Server: 5.5.24-0ubuntu0.12.04.1-log (Ubuntu 12.04)
Pas de solution correcte