Maison > base de données > tutoriel mysql > le corps du texte

l'esclave a des UUID de serveur MySQL égaux

黄舟
Libérer: 2017-02-15 10:50:02
original
1405 Les gens l'ont consulté

Récemment, lors du déploiement de l'architecture de réplication maître-esclave MySQL, j'ai rencontré "Last_IO_Error : erreur fatale : le thread d'E/S esclave s'arrête car le maître et l'esclave ont des UUID de serveur MySQL égaux ; ces UUID doivent être différents pour la réplication vers travail." ce message d'erreur. Autrement dit, le même UUID est utilisé dans l'architecture maître-esclave. Vérifiez la variable système server_id, il s'agit déjà d'un paramètre différent, quelle en est la raison ? Ce qui suit est une description détaillée.

1、错误消息
mysql> show slave staus;
 
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; 
these UUIDs must be different for replication to work.
 
2、查看主从的server_id变量
master_mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 33    |
+---------------+-------+

slave_mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 11    |
+---------------+-------+
-- 从上面的情形可知,主从mysql已经使用了不同的server_id

3、解决故障
###查看auto.cnf文件
[root@dbsrv1 ~] cat /data/mysqldata/auto.cnf  ### 主上的uuid
[auto]
server-uuid=62ee10aa-b1f7-11e4-90ae-080027615026

[root@dbsrv2 ~]# more /data/mysqldata/auto.cnf ###从上的uuid,果然出现了重复,原因是克隆了虚拟机,只改server_id不行
[auto]
server-uuid=62ee10aa-b1f7-11e4-90ae-080027615026

[root@dbsrv2 ~]# mv /data/mysqldata/auto.cnf  /data/mysqldata/auto.cnf.bk  ###重命名该文件
[root@dbsrv2 ~]# service mysql restart          ###重启mysql
Shutting down MySQL.[  OK  ]
Starting MySQL.[  OK  ]
[root@dbsrv2 ~]# more /data/mysqldata/auto.cnf  ###重启后自动生成新的auto.cnf文件,即新的UUID
[auto]
server-uuid=6ac0fdae-b5d7-11e4-a9f3-0800278ce5c9


###再次查看slave的状态已经正常
[root@dbsrv1 ~]# mysql -uroot -pxxx -e "show slave status\G"|grep Running
Warning: Using a password on the command line interface can be insecure.
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

###主库端查看自身的uuid
master_mysql> show variables like 'server_uuid';
+---------------+--------------------------------------+
| Variable_name | Value                                |
+---------------+--------------------------------------+
| server_uuid   | 62ee10aa-b1f7-11e4-90ae-080027615026 |
+---------------+--------------------------------------+
1 row in set (0.00 sec)

###主库端查看从库的uuid
master_mysql> show slave hosts;
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID                           |
+-----------+------+------+-----------+--------------------------------------+
|        33 |      | 3306 |        11 | 62ee10aa-b1f7-11e4-90ae-080027615030 |
|        22 |      | 3306 |        11 | 6ac0fdae-b5d7-11e4-a9f3-0800278ce5c9 |
+-----------+------+------+-----------+--------------------------------------+
### Author : Leshami
### Blog   : http://www.php.cn/
Copier après la connexion


4. Référence d'extension
a Description de server_id
L'ID du serveur, utilisé dans la réplication vers. donnez à chaque maître et esclave une identité unique. Cette variable est définie
par l'option --server-id Pour chaque serveur participant à la réplication, vous devez choisir un
entier positif compris entre 1 et 232-1. (2 à la puissance 32 moins 1) pour faire office d'identifiant de ce serveur.

b Description de server_uuid
Commençant par MySQL 5.6, le serveur génère un véritable UUID en plus du --server-id
fourni par l'utilisateur Ceci est disponible en tant que variable globale en lecture seule server_uuid. (Variable globale en lecture seule)

Au démarrage, le serveur MySQL obtient automatiquement un UUID comme suit :
a). Tentative de lecture et d'utilisation de l'UUID écrit dans le fichier data_dir. /auto.cnf (où data_dir est
le répertoire de données du serveur) ; quittez en cas de succès.
b). Sinon, générez un nouvel UUID et enregistrez-le dans ce fichier, en créant le fichier si nécessaire.
Le Le fichier auto.cnf a un format similaire à celui utilisé pour les fichiers my.cnf ou my.ini. Dans MySQL 5.6,
auto.cnf n'a qu'une seule section [auto] contenant un seul paramètre server_uuid [1992] etvalue;

ImportantLe fichier auto.cnf est automatiquement généré, vous ne devez pas tenter d'écrire ou modifier ce fichier

À partir également de MySQL 5.6, lors de l'utilisation de la réplication MySQL, les maîtres et les esclaves en connaissent un

les UUID d'un autre. La valeur de l'UUID d'un esclave peut être vue dans la sortie de SHOW SLAVE HOSTS Une foisSTART SLAVE exécuté (mais pas avant), la valeur de l'UUID du maître est disponible sur le
. slave dans la sortie de SHOW SLAVE STATUS.

Dans MySQL 5.6.5 et versions ultérieures, le server_uuid d'un serveur est également utilisé dans les GTID pour les transactions provenant

de ce serveur. , voir Section 16.1.3, « Réplication avec transaction globale

Ce qui précède est le contenu de l'esclave ayant des UUID de serveur MySQL égaux. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois. (www.php.cn) !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!