萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL主從復制報錯slave have equal MySQL server UUIDs

MySQL主從復制報錯slave have equal MySQL server UUIDs

MySQL主從復制報錯slave have equal MySQL server UUIDs問題要如何解決呢,對於出現slave have equal MySQL server UUIDs應該是id的問題我們來看看是不是這個原因吧。

最近在部署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,“與全球事務復制

copyright © 萬盛學電腦網 all rights reserved