45

MySQL のマスター スレーブ レプリケーションを実行しようとしています。次のコマンドを入力しているとき:

CHANGE MASTER TO MASTER_HOST='10.1.100.1', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=451228;
mysql> START SLAVE;

次のエラーがスローされます。

エラー 1201 (HY000): マスター情報構造を初期化できませんでした。その他のエラー メッセージは、MySQL エラー ログにあります。

どんな助けでも大歓迎です。

4

4 に答える 4

173

それをリセットしてみてください、それは魔法です!ON SLAVE THE SLAVE MYSQL コマンド タイプ:

RESET SLAVE;

もう一度やり直してください:

CHANGE MASTER TO MASTER_HOST='10.1.100.1', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=451228;
mysql> START SLAVE;
于 2012-03-29T21:10:03.887 に答える
6

いくつか確認してください:

1) マスターの /etc/my.cnf に server_id が実際に設定されていることを確認します。

理由は次のとおりです。レプリケーションは server_id に依存しています。クエリが実行され、マスターのバイナリ ログに記録されるたびに、マスターの server_id が記録されます。デフォルトでは、server_id が /etc/my.cnf で定義されていない場合、server_id はデフォルトで 1 に設定されます。ただし、MySQL レプリケーションのルールでは、マスターの /etc/my.cnf で server_id を明示的に定義する必要があります。さらに、特定のスレーブについて、mysqld は SQL ステートメントの server_id をリレー ログから読み取る際にチェックし、それがスレーブの server_id と異なることを確認します。これにより、MySQL レプリケーションはその SQL ステートメントを安全に実行できることを認識します。このルールは、循環 (マスター-マスター、マルチマスター) レプリケーションが実装されている場合に必要です。

select @@server_id;SQLコマンドラインで使用 して、実際にサーバーで構成を確認します。

2) スレーブの /etc/my.cnf に server_id が実際に設定されていることを確認します

理由は次のとおりです。#1と同じ理由

3) マスターの /etc/my.cnf の server_id がスレーブの /etc/my.cnf の server_id と異なることを確認します。

理由は次のとおりです。#1と同じ理由

補足: 複数のスレーブをセットアップする場合は、各スレーブがそのマスターとその兄弟スレーブとは異なる server_id を持っていることを確認してください。

理由は次のとおりです。

2 つのスレーブを持つ
マスター MASTER は server_id 1
を持ちます SLAVE1 は server_id 2
を持ちます SLAVE2 は server_id 2 を持ちます

兄弟スレーブの server_id が同じであるため、SLAVE2 でのレプリケーションが急激に遅くなります。実際、着実に遅れをとり、休憩を取り、いくつかの SQL ステートメントを処理します。これは、同一の server_id を持つ 1 つ以上のスレーブを持つマスターの障害です。これは、実際にはどこにも文書化されていない落とし穴です。私はこれを人生で何十回も見てきました。

于 2011-02-17T20:49:43.837 に答える