[mysql 主从复制原理]MySQL主从复制报错slave have equal MySQL server UUIDs

更新时间:2020-10-21    来源:mysql教程    手机版     字体:

【www.bbyears.com--mysql教程】

最近在部署MySQL主从复制架构的时候,碰到了”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.” 这个错误提示。即主从架构中使用了相同的UUID。检查server_id系统变量,已经是不同的设置,那原因是?接下来为具体描述。

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

下面是英文译过来的

4,延生参考

一,有关SERVER_ID的描述

服务器的ID,REPLI使用
阳离子给每个主机和从机的唯一标识。这个变量被设置
由-server-id选项。对于每个服务器参与复制的,你应该选择一个
在范围从1到232- 1的正整数(2的32次方减1)作为该服务器的标识。

B,有关server_uuid的描述

从MySQL 5.6开始,服务器除了-server-ID生成一个真正的UUID
由用户提供。这是可作为全球,只读变量server_uuid(全局只读变量)

启动时,如下MySQL服务器会自动获得一个UUID:
一个)。尝试阅读和使用写在文件DATA_DIR / auto.cnf的UUID(其中DATA_DIR是
在服务器的数据目录);出口上的成功。
b)中。否则,生成一个新的UUID并将其保存到这个文件,如果有必要创建文件。
该auto.cnf文件具有类似于用于的my.cnf或my.ini文件的文件的格式。在MySQL 5.6,
auto.cnf只有一个[汽车]包含一个server_uuid [1992]设置部分,
值;

重要

该auto.cnf文件是自动生成的;你不应该试图写
或修改此文件


还与MySQL 5.6开始,使用MySQL的复制,主人和奴隶的时候知道一
另一个是的UUID。一个奴隶的UUID的值可以在SHOW SLAVE HOSTS的输出中可以看出。一旦
START SLAVE已经执行(而不是之前),大师的UUID的值可在
奴隶在SHOW SLAVE STATUS的输出。

在MySQL 5.6.5或更高版本,服务器的server_uuid也在GTIDs用于发起交易
在该服务器上。欲了解更多信息,请参见16.1.3,“与全球事务复制

本文来源:http://www.bbyears.com/shujuku/106032.html

热门标签

更多>>

本类排行