web-dev-qa-db-ja.com

エラー:MySQLでマスタースレーブレプリケーションを実行中に「マスター情報構造を初期化できませんでした」

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エラーログにあります。

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

41
user619684

それをリセットしてみてください、それは魔法です!スレーブ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;
143
Neo

いくつかのことを確認してください:

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

その理由は次のとおりです。複製はserver_idに依存します。クエリが実行され、マスターのバイナリログに記録されるたびに、マスターのserver_idが記録されます。デフォルトでは、server_idが/etc/my.cnfで定義されていない場合、server_idは1にデフォルト設定されます。ただし、MySQLレプリケーションのルールでは、server_idをマスターの/etc/my.cnfで明示的に定義する必要があります。さらに、特定のスレーブについて、mysqldはSQLステートメントのserver_idをリレーログから読み取るときにチェックし、スレーブのserver_idと異なることを確認します。これが、MySQL Replicationがその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つ以上のスレーブを持つことに対するマスターの障害です。これは、実際にはどこにも文書化されていない落とし穴です。私はこれまでに何十回も見ました。

5
RolandoMySQLDBA