私は以下の動作を確認したいと思っていました。私は、MySQLの行ベースのレプリケーションに気付きました。構成。行ベースのレプリケーションをオン、及びペット名前次の表に与えられると:デフォルトでヌル以外の列が追加された場合、行レベルのbinlogエントリが記録される
| id | name | species |
|----|-----------|--------------|
| 1 | max | canine |
| 2 | spike | canine |
| 3 | bell | feline |
任意の更新、削除、または挿入をバイナリログに記録されています。ただし、null以外の列にデフォルト値を追加するとします(例:
ALTER TABLE `pets`
ADD COLUMN `sex` varchar(7) NOT NULL DEFAULT "unknown" AFTER `species`;
のでようにレコードが更新される:私は最初に予想
| id | name | species | sex
|----|-----------|--------------|--------
| 1 | max | canine | unknown
| 2 | spike | canine | unknown
| 3 | bell | feline | unknown
挙動は(各行が変化するため)更新が行ごとに記録される、及びこれらの更新はに現れるということでしたbinlog。しかし、実際には、新しい列とデフォルト値が追加されたときに、行レベルイベントがbinlogにまったく書き込まれていないように見えます。
とにかく、私が持っている質問は以下のとおりです。
- は、この動作が期待されている、または当社のセットアップ(または私の観察スキル)と、いくつかの問題を、この指標ですか?
- この動作はどのような方法でも設定できますか?
すべての情報、リンク、リソースなどを高く評価します。
おかげで、binlog format setting上のMySQLのドキュメントとして
このステートメントを複製するときに、mysqlが一連の更新ステートメントを発行することは期待していません。これは、フィールドにデフォルト値を割り当てることは、内容の更新ではないからです。さらに、デフォルト値としてnullを持つフィールドに対して一連の更新が生成されることを期待していないため、ロジックが矛盾しています。 Nullは、他のデフォルト値と同様に値です。 – Shadow
ありがとう@シャドウ、ええ、あなたは値がされているヌルについても正しいです。それはまだ私の更新のようですが、私はあなたのポイントを理解しています。高レベルでは、新しいデフォルト値が行レプリケーションがオンになっているbinlogに反映されない理由がわかりません(つまり、行がある意味で変更されているので、 binlog内の何か)。とにかく、それはちょうど私の経験不足かもしれません - しかし、なぜこれが事実になるかについてのさらなる議論のためのドキュメンテーションリンクは間違いなく歓迎です – foxygen
まあ、ドキュメント内の参照を見つけました。 – Shadow