3 votes

Comment vérifier si deux grandes tables sont identiques ?

J'ai deux serveurs qui fonctionnent, l'un en tant que maître et l'autre en tant qu'esclave. Je veux vérifier si les deux tables ont les mêmes données. Comment puis-je le vérifier et le confirmer ? La table a plus de 23 millions de lignes.

Dans un premier temps, j'ai essayé d'exécuter CHECKSUM TABLE tbl;

Mais j'obtiens cette erreur après 60 secondes : ERROR 2013 (HY000): Lost connection to MySQL server during query

Veuillez me conseiller.

2voto

a'r Points 14772

Vous pouvez également utiliser mk-table-checksum qui fait partie des utilitaires Maatkit.

http://www.maatkit.org/doc/mk-table-checksum.html

1voto

Yahel Points 5018

Si vos tables sont définies comme maître et esclave, vous ne devriez pas avoir à effectuer cette vérification. La synchronisation binaire entre les deux vous assure qu'elles sont identiques. N'est-ce pas le cas ?

Si vous utilisez l'une des dernières versions de mysql, vous devriez également jeter un œil au partitionnement des tables : http://dev.mysql.com/doc/refman/5.1/en/partitioning.html ce qui accélérerait grandement l'accès comme les checksums.

0voto

initall Points 1924

Je ne sais pas si ce que vous voulez réaliser est possible à 100%, mais au moins une façon de vérifier l'état de la réplication est d'implémenter une sorte de mécanisme simple de battement de cœur, comme décrit dans le livre MySQL haute performance .

La méthode fonctionne avec des horodatages qui sont insérés dans une table et vérifiés toutes les 20 secondes. Avec le rapport d'état que SHOW SLAVE STATUS \G retourne des statistiques précises sur l'état actuel.

Vous voyez combien de déclarations l'esclave est en retard sur le maître, ou les erreurs de réplication et autres. S'il n'y a pas d'erreurs ou de déclarations en attente, vous devriez être en mesure de supposer qu'à l'instant t, vos tables sont synchronisées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X