web-dev-qa-db-fra.com

Importer les données MySQL ont échoué avec l'erreur 1839

J'ai la configuration du maître esclave de MySQL avec GTID configuré. J'ai repris la sauvegarde des données de la maîtrise et l'importateur à un serveur de test individuel. Il n'est pas importé comme

Erreur 1839 (HY000) à la ligne 24: @@ global.gtid_purged ne peut être définie que lorsque @@ global.gtid_mode = sur j'ai essayé avec --Se-gtid-purged = OFF et Auto, mais pas de chance.

12
JAVAC

Si vous exécutez un

SHOW MASTER STATUS\G

vous verrez quelque chose comme ça:

mysql> show master status\G
*************************** 1. row ***************************
         File: mysql-bin.000299
         Position: 780437462
         Binlog_Do_DB:
         Binlog_Ignore_DB:
         Executed_Gtid_Set: 075d81d6-8d7f-11e3-9d88-b4b52f517ce4:1-616637650,
         e907792a-8417-11e3-a037-b4b52f51dbf8:1-25385296642
         1 row in set (0.00 sec)

Parce que lorsque GTID est activé, tous les serveurs ont obtenu leur propre UUID et il y a des transactions. Je suppose que vous avez créé la décharge avec MySqldump et si vous regardez au début de ce fichier, vous trouverez quelque chose de similiaire comme ceci:

--
-- GTID state at the beginning of the backup 
--

 SET @@GLOBAL.GTID_PURGED='075d81d6-8d7f-11e3-9d88-b4b52f517ce4:1-616648986,
 e907792a-8417-11e3-a037-b4b52f51dbf8:1-25385296642';

Ceci est la commande qui ne peut pas être exécutée.

Vous avez les options suivantes:

  • Supprimer cette commande du fichier de vidage MySQL. Simplement le supprimer. Tous les inserts apparaîtront sur l'esclave comme il s'agit de transactions locales

  • Si vous voulez éviter cela, vous pouvez également réinitialiser le maître sur esclave

    mysql> RESET MASTER;

    Cette commande nettoiera la variable 'Executée_gtid_set' sur l'esclave, vous pouvez donc importer directement la DUMPLILE, et la variable SET_GLOBAL_GTID_PRÉDITIONNÉE précédemment adoptée

  • Lorsque vous créez le mySqldump, vous pouvez ignorer la pièce de configuration GTID comme l'ajout de --set-gtid-purged=OFF Paramètre pour MySqldump.

REMARQUE:

si le sous-ensemble GTID diffère sur le maître entre maître et esclave (si vous souhaitez l'utiliser dans une configuration de réplication), la réplication ne fonctionnera pas, je recommanderais un vidage et une restauration binaires, comme définissant le GTIS de l'esclave exactement à la maîtrise.

Avec GTID, il y a beaucoup de nouveaux problèmes émergent, mais votre configuration de réplique sera plus cohérente. Cela vaut la peine de travailler avec ça.

26
banyek