停電が原因で壊れたレプリケーションを復元しようとしています。 slaveDBを確認すると、すでに壊れていたため、新しいレプリケーションをセットアップしました。そして、おそらくレプリケーションを完了すると、私はこれで行き詰まります:バイナリログからデータを読み取るときにマスターから致命的なエラー1236が発生しました: 'Misconfigured master-server id was not set'
Percona Server 5.5を実行しています。ここに私が作った手順があります:
1.)マスターサーバーでmasterDB(IP = 10.0.0.20、server_id = 1)、innobackupexを実行してホットバックアップを作成しました。 xtrabackup_binlog_infoを確認し、slavedb-bin.000609および113535960をbinlogファイルと位置。
2.)バックアップをslaveDB(IP = 10.0.0.40)に復元し、レプリケーションを次のようにセットアップします-CHANGE MASTER TO MASTER_Host = '10 .0.0.20 '、MASTER_USER =' user '、MASTER_PASSWORD =' password '、MASTER_LOG_FILE =' slavedb-bin.000609 '、MASTER_LOG_POS = 11353596(innobackupexバックアップのxtrabackup_binlog_infoに記載されているとおり).
3.)スレーブを起動した後、誤って構成されたマスターで上記のエラー1236が発生しますが、マスターのserver_idは1です。
適用されたトランザクションで破損している可能性があるため、次のbinlogファイルに移動することが可能な解決策であると古いスレッドでオンラインで読みました。
しかし、どうすれば次のbinlogファイルに移動できますか?それはinnobackupex xtrabackup_binlog_infoからの次のbinlog? "ですか、それともマスターログをチェックして、クラッシュする前に書き込まれた最後のbinlogを見つけますか?
Innobackupexから提供されたものからbinlogを越えて、slavedb-bin.000610とPOS = 0に移動しようとしましたが、それでも同じエラーが発生しました。
これは推測ですが、オプションserver-id
を有効にできません。私の経験では、これはレプリケーションを初めて設定するときの問題の一般的な原因です。特にマスターが文句を言わずに次の構文を受け入れるためです:
mysql> SET GLOBAL server_id = 1;
Query OK, 0 rows affected (0.04 sec)
そして、サーバーIDが有効になっているようです:
mysql> SHOW GLOBAL VARIABLES like 'server\_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.02 sec)
ただし、機能しません(再起動してmy.cnf
から読み取るか、パラメータとして渡されるまで有効になりません)。 マスターが再起動されるまで、スレーブは文句を言います。
公式ドキュメントは誤解を招くものです 動的であると言いますが 実際にはそうではありません(または、少なくとも初めてのセットアップ時、またはデフォルトでのセットアップ時などではありません)。誤解を招くドキュメントについて言及している 詳細についてはこのバグ を参照してください。
要約すると、バイナリログのアクティブ化とサーバーIDのセットアップにはサーバーの再起動が必要なので、インストール時に実行することを常にお勧めします。構成ファイルの[mysqld]
sectionで変更して、サービスを再起動します。