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/
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.
de ce serveur. , voir Section 16.1.3, « Réplication avec transaction globale