いくつかのスレーブデータベースに複製するMySQLマスターデータベースをセットアップしています。
私の質問は、スレーブデータベースが最新であることを監視および/またはテストするためのベストプラクティスは何ですか。レプリケーションを停止させるエラーが発生すると、管理者に警告します。
監視ツールを検索しましたが、適切なものを見つけることができませんでした。
また、スレーブ間の同期をテストするための「ベストプラクティス」アプローチは何ですか。データベースレプリケーションのユニットテストのようなものはありますか?
私の無知が誰かを怒らせたら、私は謝罪します。
レプリケーションの大きな問題はチェックです
1、3、および4は、関連するノードでSHOW MASTER STATUS/SHOW SLAVE STATUSを使用してキャプチャできますが、レプリケーションの遅延の精度は1秒のみで、各ホップ全体でのみです。 Perconaツールキットには、より正確なレプリケーションラグを取得するためのスクリプトが含まれています。
マルチマスターレプリケーション(例: tungsten 、 Percona )を使用すると、多くの労力を節約できますが、セットアップには追加の作業/ソフトウェアが必要です。
Ndoes間のネットワークに障害が発生した場合、プロセスはすべて正常に実行されている可能性がありますが、データを転送することはできません。各ノードを監視して、アップストリームノードに接続できることを確認する必要があります。
いくつかのスレーブデータベースに複製するMySQLマスターデータベース
ベストプラクティスは、スレーブの1つもマスターとして指定することです(双方向レプリケーション)。これにより、停止が発生した場合や、インデックスの再構築、バックアップ、スキーマの変更などのメンテナンスタスクを簡単に切り替えることができます。
スレーブノードの数によっては、変更を伝播するために ファンアウトノード を指定することもできます。
エスカレーションの管理、データを収集するためのスクリプトのスケジューリングなどに関しては、これを行うためのツールがたくさんあります。私はnagiosを使用しているので、他の多くの人も使用しています。
私の質問は、スレーブデータベースが最新であることを監視および/またはテストするためのベストプラクティスは何ですか?
簡単なテストのために、マスターにデータを挿入/更新し、それがスレーブに複製されていることを確認します。
しかし、整合性チェックの場合、 pt-table-checksum が探しているものです。
例:
pt-table-checksum localhost --empty-replicate-table --databases db --nocheck-replication-filters --replicate percona.checksums > /var/log/pt-table-checksum.log 2>&1
レプリケーションを停止させるエラーが発生すると、管理者に警告します。
Nagiosを使用している場合、 check_mysql_health プラグインはスレーブステータス(実行中かどうか)を監視するのに役立ちます。ただし、一貫性を監視するには、 pmp-check-pt-table-checksum プラグインを確認してください。
一貫性のないものがある場合は、 pt-table-sync をお見逃しなく:
pt-table-sync -v --print --sync-to-master h=localhost,D=db,t=table
pt-table-sync -v --execute --sync-to-master h=localhost,D=db,t=table
おそらく最初に--print
オプションを使用する必要があることに注意してください。
奴隷に
SHOW SLAVE STATUS\G;
これらを取得している場合:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
つまり、ほぼそこにいるということです。テストするには、MASTERで書き込みトランザクションを実行し、スレーブで自動的に複製されることを確認してください。
監視ツールを検索しましたが、適切なものを見つけることができませんでした。
Percona MySQL Monitoring Template [s] for Cacti を使用できます。 MySQLレプリケーションテンプレート(pt-heartbeat
ツールを使用)を確認してください。
乾杯