Slony-IでレプリケーションしているDBに対して、停止せずにテーブルを追加する方法

Slony-IPostgreSQL用の非同期のシングルマスタレプリケーションソフト。
意外と簡単にPostgreSQLレプリケーションをすることが可能です。


今回は、一旦運用を開始したレプリケーションしているDBに対して、機能追加等でテーブルの追加が必要になった場合に
Slonyを止めずに新しくレプリケーション対象のテーブルを追加するやり方を紹介します。
(他にもっと簡単な方法があるかもしれませんが。あれば教えてください)

1.新しいテーブルを追加する

execute_script経由で、セット全体にテーブルを追加。
full_path_to_sql_script_fileにCREATE TABLE文を書いて、事前に準備しておきます。

execute_script [options] (セット番号) full_path_to_sql_script_file
2.新セットを追加する

slon_tools.confに新しいセットの設定を追加
set_id は稼働中のset_idと被らないように。
table_id は、select max(tab_id) from _<<レプリケーション名>>.sl_table;の結果+1
sequence_id は、select max(seq_id) from _<<レプリケーション名>>.sl_sequence ;の結果+1

slonik_create_set (セット番号) | slonik
3.追加したセットの購読
slonik_subscribe_set (追加したセット番号) (ノード番号) | slonik
4.セットのマージ

追加したセットを元のセットにマージする

slonik_merge_sets (ノード番号) (元のセット) (追加したセット番号) | slonik


これで完了です。簡単です。