Slony-Iを止めずにテーブルを追加

こんばんは、ふーみんです。
今日はPostgreSQLのレプリケーションツール、Slony-Iでテーブルを
する時の手順に関して投稿したいと思います。

この方法でやればSlony-Iを止めずにテーブルを追加することが
できます!
それでは早速ご説明。

① まずは以下のコマンドで、今回追加するテーブルをマスターとスレーブに追加します。
===============================
$ slonik_execute_script -c “CREATE TABLE hoge ~” 1 | slonik
===============================
※「CREATE TABLE hoge ~」この箇所は自分が新しく追加するテーブルのクリエイト文を書き込むので、適宜内容を変更してください。
※コマンド上にある「1」ですが、これはセット番号を指します。

② ①で追加したテーブルの情報をslon_tools.confに追加します。
ただ、slon_tools.confを編集する前は予めslon_tools.confの
バックアップをとっておくと安全ですね!(私はいつもそうしてます)

バックアップをとったら早速、追加用の一時的なセットを記述して
行きましょう!
===============================
“set2″ => {
“set_id” => 2,
“table_id” => 2,★1
“origin” => 1,
“sequence_id” => 2,★2
“pkeyedtables” => [
'schema.table1',★3
],
“sequences” => [
'schema.table1_seq',★4
],
},
===============================
★1.ここには「select max(tab_id) from _hogedb_cluster.sl_table;」結果の+1
した数値を記述します。(_hogedb_clusterは適宜変更してください)

★2.ここには「select max(seq_id) from _hogedb_cluster.sl_sequence;」結果の+1
した数値を記述します。(_hogedb_clusterは適宜変更してください)

★3.ここは今回追加したテーブルを記述

★4.ここには今回追加したシーケンスを記述
※私はシーケンス名が長すぎることに気付かず、あとで痛い目を見たことがあるので、シーケンス名の長さには注意!

上記のセットを記述したら一旦slon_tools.confの編集は終わり。(また後で編集します)

③ slon_tools.confへの追記が終わったら、Slony-Iへ設定を反映していきます。

下記コマンドをマスター側で実行
===============================
#マスタ(オリジンノード)に設定を反映
slonik_create_set 2 | slonik(slonik_create_set 追加したセット番号)

#スレーブ(サブスクライバノード)に設定を反映
slonik_subscribe_set 2 2 | slonik(slonik_subscribe_set スレーブnode番号 追加したセット番号)

#設定追加のために一時的に作成したセットを既存セットにマージ
slonik_merge_sets 1 1 2 | slonik(slonik_merge_sets マスタnode番号 マージ先セット番号 追加したセット番号)
===============================

④ Slony-I上では、set1(元のセット)と、set2(追加用の一時的なセット)をマージしたので、設定ファイル(slon_tools.conf)も合わせておきます。
「set1 => { }」に「set2」で追記したpkeyedtablesとsequencesを追記します。
※追記したら「set2」はコメントアウト、もしくは削除しましょう!

これでテーブルの追加は完了です!
ただ、追加したテーブルがちゃんと更新されるかINSERTやUPDATEをして確認しておきましょう。

以上、あんまりこの内容の記事が無いので参考になれば嬉しいです(^^)