ホームページ  >  記事  >  データベース  >  スレーブは同じ MySQL サーバー UUID を持っています

スレーブは同じ MySQL サーバー UUID を持っています

黄舟
黄舟オリジナル
2017-02-15 10:50:021413ブラウズ

最近、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. Yansheng リファレンス
a、server_id の説明
各マスターとスレーブに一意の ID を与えるためにレプリケーションで使用されるサーバー ID。この変数は --server-id オプションによって設定されます。レプリケーションに参加するサーバーごとに、そのサーバーの ID として機能する

b 、server_uuid の説明

MySQL 5.6 以降、サーバーはユーザーが指定した --server-id に加えて真の UUID を生成します。これはグローバルな読み取り専用変数 server_uuid

(global Read) -only 変数) 起動時に、MySQL サーバーは次のように UUID を自動的に取得します:
a) ファイル data_dir/auto.cnf (data_dir はサーバーのデータ ディレクトリ) に書き込まれた UUID の読み取りと使用を試みます。 ); 成功すると終了します。

b) それ以外の場合は、新しい UUID を生成してこのファイルに保存し、必要に応じてファイルを作成します。

auto.cnf ファイルの形式は、my.cnf または my.ini に使用されるものと似ています。 MySQL 5.6 では、auto.cnf には、単一の server_uuid [1992] 設定と



値を含む単一の [auto] セクションのみがあります。auto.cnf ファイルは自動的に生成されます。このファイルを書き込んだり変更したりしないでください

また、MySQL 5.6 以降、MySQL レプリケーションを使用する場合、マスターとスレーブは一方の UUID を認識し、他方の UUID を確認できます。 SHOW SLAVE HOSTS の出力。START SLAVE が実行されると (事前ではありません)、マスターの UUID の値は、SHOW SLAVE STATUS の出力でスレーブで利用可能になります。MySQL 5.6.5 では、その後、サーバーの server_uuid は、そのサーバー上で開始されるトランザクションの GTID にも使用されます
詳細については、セクション16.1.3「グローバル トランザクションによるレプリケーション

」を参照してください。上記は、等しい MySQL サーバー UUID を持つスレーブの内容です。関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。