>  기사  >  데이터 베이스  >  슬레이브는 동일한 MySQL 서버 UUID를 가지고 있습니다.

슬레이브는 동일한 MySQL 서버 UUID를 가지고 있습니다.

黄舟
黄舟원래의
2017-02-15 10:50:021371검색

최근 MySQL 마스터-슬레이브 복제 아키텍처를 배포할 때 "Last_IO_Error: 치명적인 오류: 마스터와 슬레이브가 동일한 MySQL 서버 UUID를 갖기 때문에 슬레이브 I/O 스레드가 중지됩니다. 이러한 UUID는 복제 시 달라야 합니다. 일해요." 이 오류 메시지가 나타납니다. 즉, 마스터-슬레이브 아키텍처에서도 동일한 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
### Blog   : http://www.php.cn/


4. 확장 참조
a. server_id 설명
복제에 사용되는 각 서버 ID입니다. 마스터와 슬레이브는 고유한 ID입니다.
복제에 참여하는 각 서버에 대해
1~232–1( 2 범위의 양수를 선택해야 합니다. 32승 빼기 1) 해당 서버의 ID로 작동합니다.

b server_uuid 설명
MySQL 5.6부터 , 서버는 사용자가 제공한 --server-id
외에 실제 UUID를 생성합니다. 이는 전역 읽기 전용 변수인 server_uuid로 사용할 수 있습니다(전역 읽기 전용 변수)

MySQL 서버가 시작되면 다음과 같이 자동으로 UUID를 얻습니다.
a) data_dir/auto 파일에 기록된 UUID를 읽고 사용하려고 합니다. .cnf(여기서 data_dir은
서버의 데이터 디렉터리입니다.) 성공하면 종료됩니다.
b) 그렇지 않으면 새 UUID를 생성하고 이 파일에 저장하고 필요한 경우 파일을 만듭니다.
auto . cnf 파일의 형식은 my.cnf 또는 my.ini 파일에 사용되는 것과 유사합니다. MySQL 5.6에서
auto.cnf에는 단일 server_uuid [1992] 설정과
값을 포함하는 단일 [auto] 섹션만 있습니다. ;

중요
auto.cnf 파일은 자동으로 생성되지 않습니다.
또는 이 파일을 수정하세요

또한 MySQL 5.6부터는 MySQL 복제를 사용할 때 마스터와 슬레이브가 하나를 알고 있습니다
다른 UUID의 값은 SHOW SLAVE HOSTS의 출력에서 ​​볼 수 있습니다.
START SLAVE가 실행되면(이전은 아님) 마스터의 UUID 값은
슬레이브에서 사용할 수 있습니다. SHOW SLAVE STATUS의 출력.

MySQL 5.6.5 이상에서는 서버의 server_uuid가 해당 서버에서 발생하는 트랜잭션의 GTID에도 사용됩니다.
자세한 내용은 다음을 참조하세요. Section 16.1.3, “Replication with Global Transaction

위 내용은 슬레이브가 동일한 MySQL 서버 UUID를 갖는 내용입니다. 자세한 내용은 PHP 중국어 웹사이트(www. .php.cn) !

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.