Slony-I 1.2でカスケード接続をやってみた

Slony-I ( http://www.slony.info/ )はPostgreSQLで利用できる、マスター・スレーブ型のレプリケーション・ソフトで、既に何度か取り上げている。( http://d.hatena.ne.jp/aaabbb_200904/20090625/1245941363 )
Slony-Iでは、カスケード接続(単純なマスタースレーブではなく、スレーブの下に更にスレーブをつける構成 )もできるのだが、今まで試したことが無かったので、試してみた。

Slony-Iの設定には、いつも slonik_* のスクリプトを使用しているのだが、スクリプトを使用するためには、slon_tools.conf を作成する必要がある。 slon_tools.conf は、ノード数、レプリケートするDB数に限らず、1つのファイルで複数のレプリケートを設定できるが、ここでは、単一のセット(1つのDBに属するテーブルの集合) を repldb1 ==> repldb2 ==> repldb3 の順で接続した。


カスケード接続と通常の接続で異なるのは、 add_node のnode3の部分だけで、

parent  => 2, 

が加わっていることだけである。

    add_node(node     => 1,
	     host     => '127.0.0.1',
	     dbname   => 'repldb1',
	     port     => 5432,
	     user     => 'replusr1',
             password => 'xxx');
    add_node(node     => 2,
	     host     => '127.0.0.1',
	     dbname   => 'repldb2',
	     port     => 5432,
	     user     => 'replusr1',
             password => 'xxx');
    add_node(node     => 3,
	     parent  => 2,
	     host     => '127.0.0.1',
	     dbname   => 'repldb3',
	     port     => 5432,
	     user     => 'replusr1',
             password => 'xxx');

レプリケーションを始めるには、通常の接続と同様、(setの番号を1とする)

$ slonik_init_cluster | slonik
$ slonik_create_set 1 | slonik
$ slonik_subscribe_set 1 2 | slonik
$ slonik_subscribe_set 1 3 | slonik
$ slon_start 1
$ slon_start 2
$ slon_start 3

で実行出来る。