Maison  >  Article  >  base de données  >  Analyse du problème de synchronisation maître-esclave Mysql

Analyse du problème de synchronisation maître-esclave Mysql

PHP中文网
PHP中文网original
2018-05-10 17:14:372151parcourir

Afficher l'état de la bibliothèque du cluster afficher l'état de l'esclaveG

Conseil original de la bibliothèque : Last_Error : le coordinateur s'est arrêté car il y avait des erreurs dans le(s) travailleur(s) L'échec le plus récent est : l'exécution du travailleur 1 a échoué. transaction '864e6992-0a34-11e7-a98a-7cd30ac6c9ec:148408' dans le journal principal mysql-bin.000010, end_log_pos 920578920. Voir le journal des erreurs et/ou la table performance_schema.replication_applier_status_by_worker pour plus de détails sur cet échec ou d'autres, le cas échéant.

1. Suivez les invites de Congku pour trouver la raison, entrez la commande

select * from performance_schema.replication_applier_status_by_worker\G

pour obtenir

Cette transaction s'est produite sur la table r_com_patent, et la table a été localisée, mais je ne sais pas quel enregistrement.

2. Que s'est-il passé lorsque je suis allé à la bibliothèque principale pour trouver le fichier binaire. Entrez la commande

Mysqlbinlog --no-defaults –v –v --base64-output=decode-rows /usr/local/mysql/data/master-bin.000010 | grep –A ‘10’ 920578920


pour enfin localiser l'enregistrement.

La bibliothèque principale a mis à jour la table r_com_patent, mais la bibliothèque du cluster ne trouve pas l'enregistrement mis à jour.

Plus précisément, la base de données principale a modifié l'enregistrement avec patent_id 45 dans la table r_com_patent, et le champ cid a été modifié de NULL à 3253026. L'enregistrement avec patent_id 45 dans la table de base de données du cluster r_com_patent, le champ cid était à l'origine 3253026, car le mécanisme de réplication doit trouver l'enregistrement avec l'ID brevet 45 et l'ID NULL dans la table de base de données r_com_patent, il n'a donc pas été trouvé. . .

3. Solution

1) Afficher l'enregistrement dans le master.

Select * from r_com_patent where patent_id = 45;

2) Sur l'esclave, cherchez l'enregistrement mis à jour, il ne devrait pas exister.

  Select * from r_com_patent where patent_id = 45;

3) Remplissez ou modifiez les données perdues sur l'Esclave. ​

  Insert into r_com_patent values(3253026,45);

4) Ignorer la transaction signalée par une erreur sur l'esclave.

Stop slave;
Set @@SESSION.GTID_NEXT=’ 864e6992-0a34-11e7-a98a-7cd30ac6c9ec:148408’
Begin;
Commit;
Set @@SESSION.GTID_NEXT = AUTOMATIC;
Start slave;

Ensuite, vérifiez à nouveau

Show slave status\G

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn