読者です 読者をやめる 読者になる 読者になる

slonyのデータレプリケーション設定(カラム追加&削除)

slony

ブログを見てくれてはいるが、全然コメントしてくれない友人より、
「レプリケーション中にテーブル追加出来るのは分かったけど、カラム追加or削除したら挙動どうなんの?」
という質問を頂いたので以前テストした結果を記載したいと思います。
間違いあるかもしれないので、間違いがあったらご指摘ください。


結論からいうと、マスターとスレーブで同じカラム情報を追加すればレプリケーションは問題なく行われました。

テスト項目は以下ページを参考にさせて頂きました。
http://www.nakachangoo.net/node/39



カラムの追加テスト

  • マスターのみカラム追加してマスターへupdateをかける
マスター カラム追加されデータが更新される。
スレーブ スレーブはカラム追加されない。
レプリケーション 停止した。


  • スレーブにも同じカラムを追加する。
マスター データが更新される。
スレーブ データが更新される。
レプリケーション 再開した。


  • スレーブに同じカラム追加後、マスターへupdateをかける
マスター データが更新される。
スレーブ データが更新される。
レプリケーション 問題無し。


  • スレーブのみカラム追加してマスターへupdateをかける
マスター カラムは追加されない。
スレーブ カラムは追加される。
レプリケーション 問題無し。


  • マスターに同じカラムを追加しマスターへupdateをかける
マスター データが更新される。
スレーブ データが更新される。
レプリケーション 問題無し。


カラムの削除テスト

  • マスターのカラムを削除してマスターへupdateをかける
マスター -
スレーブ カラムに変化無し。該当カラム以外は更新される。
レプリケーション 問題無し。


  • スレーブのカラムの削除し、マスターへupdateをかける
マスター データが更新される。
スレーブ データ更新が停止(レプリケーションが停止)。
レプリケーション マスターも同じようにカラムを削除するとレプリケーションが再開した。

※ここだけテスト項目を参考というか丸パクリさせて頂いた
http://www.nakachangoo.net/node/39
と異なっていました。
URL先ではスレーブのみカラム削除してもレプリケーションは行われたような記載でしたが、
マスターも同じようにカラムを削除しないとレプリケーションが停止したままでした。。。
時間がある時に再検証やってみようかな。


まとめるとカラム追加or削除を行う場合の手順は、

  1. 参照をスレーブに向けている場合はマスターに向け直す。
  2. マスターでカラム追加or削除する。
  3. 速攻スレーブで同じようにカラム追加or削除する。
  4. 参照をスレーブに向け直す。

という感じになりそうです。