21

多数のデータベース(クライアントごとに1つ)を実行するサーバーのレプリケーションを設定しており、次の代わりにmy.cnfに常に追加することを計画しています。

binlog-do-db  = databasename 1
binlog-do-db  = databasename 2
binlog-do-db  = databasename 3
...
binlog-do-db  = databasename n

私はむしろただ持つことができます

binlog-ignore-db  = mysql
binlog-ignore-db  = informationschema

(そしてログに記録するデータベースが指定されていません)そして他のすべてがログに記録されていると仮定しますか?

編集:実際にすべてのbinlog-do-dbエントリを削除すると、すべてがログに記録されるように見えます(データベースを移動すると、バイナリログファイルの位置が変わるのがわかります)が、スレーブサーバーでは何も取得されません!(おそらく、これはreplicate-do-dbを使用する場合です。これはアイデアを殺してしまいます。MySQLに複製するデータベースを自動的に検出させることはできないと思います)。

4

1 に答える 1

12

それは正しいように見えます:http://dev.mysql.com/doc/refman/5.0/en/binary-log.html#option_mysqld_binlog-ignore-db

その参照によると:

--binlog-ignore-dbルールがいくつかあります。デフォルトのデータベースは、-binlog-ignore-dbルールのいずれかに一致しますか?

  • はい:ステートメントを記述せずに終了します。
  • いいえ:クエリを記述して終了します。

無視するコマンドしかないため、デフォルトの(アクティブな)データベースが無視されたデータベースの1つと一致しない限り、すべてのクエリがログに書き込まれます。

于 2008-08-11T20:22:24.730 に答える