バイナリログフィルタ


バイナリ・ログ・フィルタは、binlog-do-dbとbinlog-ignore-dbの2つのオプションでバイナリ・ログから文をフィルタできます.
一、binlog-do-db
binlog-do-db=db_の使用name.このオプションを使用すると、プライマリ・サーバは、現在のデータベース(USEで選択されているデータベース)がdb_であるかどうかを判断します.name、もしそうであれば、更新はバイナリログに記録されます.使用後、明示的に指定されていない他のすべてのデータベース 無視されます.このオプションを使用する場合は、現在のデータベースのみが更新されていることを確認します.
私のサーバには2つのデータベースがあり、1つのdb_factory、もう一つはdb_user.このオプションを使用する前に、両方のデータベースの更新操作はすぐにライブラリにコピーされますが、設定
binlog-do-db=db_factory
その後、db_userの変更は、ライブラリからコピーされません.特に必要でない場合は、このオプションを設定しないほうがいいです.もちろん、1つのデータベースが常に更新されている場合、他は同じローカルデータベースであり、バイナリログの後続操作に使用されなくてもよい場合は、最適化手段としてもよい.
特に注意すべき点はbinlog-do-db=db_を設定するとfactory.ただし、次の文を使用します.
use db_user
insert into db_factory.employ ...........
この時点で、更新はバイナリ・ログによって受信されません.
二、binlog-ignore-db
特定のデータベースを無視して、他のデータベースをコピーするオプションを示します.実は上のオプションは「他のデータベースを無視し、私がログに入ったことだけを記録する」という意味ですが、このオプションは「私を無視し、他のデータベースをログに記録する」という表で、このオプションの使用は以下のようにすることができます.
[mysqld]
binlog-ignore-db=db_factory
binlog-ignore-db=db_user
もちろん、上記のbinlog-do-dbは、複数のテーブルがバイナリ・ログに書き込まれる必要があることを複数回記録することもできます.
三、オプション規則
  • binlog-do-dbまたはbinlog-ignore-dbルールはありますか?いいえ:バイナリ・ログに文を書き込み、終了します.あります:次のステップを実行します.
  • にはいくつかのルールがあります(binlog-do-dbまたはbinlog-ignore-dbまたは両方あります).現在、USEコマンドでデータベースを選択するデータベースがあります.  なし:文を書き込まずに終了します.あります:次のステップを実行します.
  • には現在のデータベースがあります.binlog-do-dbルールはありますか?  あります:現在のデータベースはbinlog-do-dbルールに一致していますか?もしそうであれば、書き込みは終了し、そうでなければ書き込みは終了しません.いいえ:次のステップを実行します.
  • にはbinlog-ignore-dbルールがあります.現在のデータベースはbinlog-ignore-dbルールに一致していますか?  あります:文を書き込まずに終了します.なし:クエリーを書き込み、終了します.

  • 上記のフローロジックから、binlog-do-dbが設定されている場合、binlog-ignore-dbは無視されることがわかります.
    また、この2つのオプションの適用では、現在のデータベースの選択がUSEで選択されていることに注意することが重要です.