2012-02-11 16 views
7

1つのMASTERと1つのSLAVEで単純な複製設定を使用すると、SLAVEとMASTERが完全に同期されていることをどのように確認できますか?MySQLレプリケーションを確実にする方法SLAVEはレプリケーションマスターと完全に同期していますか?

は今、はい、両者はまったく同じ画像およびレプリケーションから始まっ作業およびレポートすべてが大丈夫であることに過ぎない。 *それは、レプリケーションを停止し、エラーがあったこと起こっているし、その後、レプリケーションが停止し、後で再開されなければなりませんでした。 *おそらく、SLAVEで変更が誤って発生していて、もうマスターと同じではありません。 *その他のシナリオでは、同期を破る可能性があります。

両方のデータベースの大きなmysqldumpを実行してファイルを比較することはできますが、私はより簡単に実装できるメソッドに興味があり、すべてが同期していることを自動的に確認することができます。

おかげ

+0

http://dba.stackexchange.com/questions/17501/monitoring-replication-on-mysql –

答えて

8

あなたが(以前はMaatkitとして知られている)Percona Toolkitを試したことがありますか?あなたのケースにはpt-table-checksumというツールのいずれかを使用できます。他のツールもWebサイトでチェックできます。

PT-テーブルチェックサムマスターと矛盾しているレプリカに異なる 結果を生成マスター上 実行チェックサムクエリによってオンラインレプリケーション整合性チェックを行います。 オプションのDSNは、マスターホストを指定します。差異が見つかった場合、または警告またはエラー が発生した場合、ツールの終了ステータスは ではありません。

次のコマンドを実行すると、チェックサム、 ローカルホスト上のレプリケーションマスタにすべてのテーブルを接続し、すべての 検出されたレプリカで結果を報告します。

+0

まだ試していませんが有望そうです。ありがとう:) – Collector

+0

彼らはまた、 'pt-table-sync'というツールを持っています。これは、あなたが何か間違ったことを見つけたらテーブルを同期させることができます。潜在的な問題を見つけ出すために 'pt-table-checksum'を使い、スレーブに複製を強制するためにマスターにステートメントを発行するので、あなた自身のリスクで使用してください! – ESG

3

MySQLサーバのバージョン5.6.14以上を持っている場合は、 レプリケーション同期チェッカーを使用できます。これはMySqlサーバパッケージに含まれています。グローバルトランザクション識別子(GTID)をサポートし、gtid_mode = ONを持つサーバー専用に設計されています。

このユーティリティを使用すると、レプリケーションサーバーの同期を確認できます。マスタとスレーブの間、または2つのスレーブ間のデータの整合性をチェックします。このユーティリティーは欠落しているオブジェクトと欠落しているデータを報告します。 このユーティリティは、アクティブなレプリケーショントポロジで動作し、同期プロセスを適用してデータを確認できます。レプリケーションがアクティブではないサーバーは確認できますが、同期プロセスはスキップされます。その場合、サーバーを手動で同期させるのはユーザーの責任です。

See MySQL Documentation for more information

+0

cpbumzしてください答えを編集しました。このツールは本当に便利です。 – Franco

+0

このツールは魅力的です。毎晩このツールを実行するための1つのライナーバッチファイルを作成し、別のサービスを使用して結果ファイルを電子メールで取得しました。ところで、GTIDの複製も魅力です。 –

3

あなたは、一見健康マスタ/スレーブレプリケーションのセットアップの不審なことが正しいです!スレーブに存在しなかったマスタに存在するデータベースに関して、check_mkから突然アラートが届いたときに、うまく動いていました...しかし、マスタとスレーブの状態出力は良好でした!それはどれくらいうんざりですか?プロセスの完全性を証明する方法は、チェックサムを使用してデータを検証することです。

私はインターネットで多くのチャッターを見て、pt-table-checksumを推薦しました。しかし、そのlimitationsは、私たちが快適に過ごせるにはあまりにも厄介であることが判明しました。最も重要なのは、ステートメントベースのレプリケーションが必要であり、設定することさえあります(pt-table-checksumリンクを参照)。 mysql 5.6 online documentationで(行ベースのレプリケーションでは...) "すべての変更をレプリケートできます。これが最も安全なレプリケーションの形式です。"ステートメントベースのレプリケーションには、いくつかの関数を適切に複製できないため、開発者に神経質になるという欠点もあります。ドキュメントのリストを参照してください。

私たちは、ステートメントベースのレプリケーションを使用してマスターとスレーブに問題が発生しているので、特に避けようとしています。

具体的には、"works independently of the binary log format (row, statement, or mixed)"という名前のmysqlrplsyncを試してみましょう。しかし、gtid-modeがオンでなければならず、MySQL 5.6.14以上が必要であることにも言及しています。これは、RHEL7/CentOS 7で提供されるMySQLが少なくとも出ていると思います。読者but you can go here for the packagesまたはhere for the repos, including RHEL derivatives and Debianの練習問題として残されているMySQL Community Editionを入手する必要があります。

関連する問題