Heim  >  Artikel  >  Datenbank  >  Slave haben gleiche MySQL-Server-UUIDs

Slave haben gleiche MySQL-Server-UUIDs

黄舟
黄舟Original
2017-02-15 10:50:021371Durchsuche

Kürzlich stieß ich bei der Bereitstellung der MySQL-Master-Slave-Replikationsarchitektur auf „Last_IO_Error: Schwerwiegender Fehler: Der Slave-E/A-Thread stoppt, weil Master und Slave gleiche MySQL-Server-UUIDs haben; diese UUIDs müssen für die Replikation unterschiedlich sein.“ funktioniert.“ diese Fehlermeldung. Das heißt, in der Master-Slave-Architektur wird dieselbe UUID verwendet. Überprüfen Sie die Systemvariable server_id. Sie hat bereits eine andere Einstellung. Was ist der Grund? Was folgt, ist eine detaillierte Beschreibung.

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. Erweiterungsreferenz
a. Beschreibung der server_id
Die Server-ID, die bei der Replikation verwendet wird Geben Sie jedem Master und Slave eine eindeutige Identität. Diese Variable wird
durch die Option --server-id festgelegt. Für jeden Server, der an der Replikation teilnimmt, sollten Sie eine
positive Ganzzahl im Bereich von 1 bis 232–1 auswählen (2 hoch 32 minus 1) als ID dieses Servers.

b Beschreibung von server_uuid
Beginnend mit MySQL 5.6 generiert der Server zusätzlich zu der vom Benutzer bereitgestellten --server-id
Diese ist als globale, schreibgeschützte Variable server_uuid verfügbar (Globale schreibgeschützte Variable)

Beim Start erhält der MySQL-Server automatisch eine UUID wie folgt:a) Versuchen Sie, die in der Datei data_dir geschriebene UUID zu lesen und zu verwenden /auto.cnf (wobei data_dir
das Datenverzeichnis des Servers ist); bei Erfolg beenden.
b) Andernfalls generieren Sie eine neue UUID und speichern Sie diese in dieser Datei.
Die Datei auto.cnf hat ein ähnliches Format wie die Dateien my.cnf oder my.ini. In MySQL 5.6 hat auto.cnf nur einen einzigen Abschnitt [auto], der eine einzige Einstellung server_uuid [1992] enthält und
value;

WichtigSie sollten nicht versuchen, oder ändern Sie diese Datei

Auch ab MySQL 5.6 kennen Master und Slaves bei Verwendung der MySQL-Replikation ein

Die UUIDs eines anderen Slaves können in der Ausgabe von SHOW SLAVE HOSTS angezeigt werden. Sobald

START SLAVE ausgeführt wurde, ist der Wert der UUID des Masters verfügbar Slave in der Ausgabe von SHOW SLAVE STATUS.


In MySQL 5.6.5 und höher wird die server_uuid eines Servers auch in GTIDs für Transaktionen verwendet, die ihren Ursprung haben
Weitere Informationen , siehe Abschnitt 16.1.3, „Replikation mit globaler Transaktion“


Das Obige ist der Inhalt von Slaves mit gleichen MySQL-Server-UUIDs. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn