[pgsql-jp: 35134] slonyでのnode追加が出来ません。

Shiro aoki @ flexpoint.co.jp
2005年 3月 25日 (金) 20:24:47 JST


お世話になります。
青木です。

slonyにて、一度、構築したレプリケーションに、もう一台サーバー(node)を
追加したいのですが、うまく設定できません。

設定済みのレプリケーション
#!/bin/sh
CLUSTERNAME=slony_test
DB1=TESTDB
DB2=TESTDB
HOST1=master
HOST2=master_2
RUSER=postgres
slonik <<_EOF_
cluster name = $CLUSTERNAME;
node 1 admin conninfo = 'dbname=$DB1 host=$HOST1 user=$RUSER';
node 2 admin conninfo = 'dbname=$DB2 host=$HOST2 user=$RUSER';
init cluster ( id=1, comment = 'Master');
create set (id=1, origin=1, comment='All tables');
set add table (set id=1, origin=1, id=1, fully qualified name =
'public.table_a', comment='table_a');
set add table (set id=1, origin=1, id=2, fully qualified name =
'public.table_b', comment='table_b');
set add table (set id=1, origin=1, id=3, fully qualified name =
'public.table_c', comment='table_c');
store node (id=2, comment = 'Slave');
store path (server = 1, client = 2, conninfo='dbname=$DB1 host=$HOST1
user=$RUSER');
store path (server = 2, client = 1, conninfo='dbname=$DB2 host=$HOST2
user=$RUSER');
store listen (origin=1, provider = 1, receiver =2);
store listen (origin=2, provider = 2, receiver =1);
_EOF_

追加しようとする部分
#!/bin/sh
CLUSTERNAME=slony_test
DB1=TESTDB
DB3=TESTDB
HOST1=master
HOST3=master_3
RUSER=postgres
slonik <<_EOF_
cluster name = $CLUSTERNAME;
node 1 admin conninfo = 'dbname=$DB1 host=$HOST1 user=$RUSER';
node 3 admin conninfo = 'dbname=$DB3 host=$HOST3 user=$RUSER';
create set (id=3, origin=3, comment='All tables');
set add table (set id=3, origin=3, id=1, fully qualified name =
'public.table_a', comment='table_a');
set add table (set id=3, origin=3, id=2, fully qualified name =
'public.table_b', comment='table_b');
set add table (set id=3, origin=3, id=3, fully qualified name =
'public.table_c', comment='table_c');
store node (id=3, comment = 'Slave2');
store path (server = 1, client = 3, conninfo='dbname=$DB1 host=$HOST1
user=$RUSER');
store path (server = 3, client = 1, conninfo='dbname=$DB3 host=$HOST3
user=$RUSER');
store listen (origin=1, provider = 1, receiver =3);
store listen (origin=3, provider = 3, receiver =1);
_EOF_

上記の追加部分を実行すると、
<stdin>:4: PGRES_FATAL_ERROR select "_slony_test".storeSet(3, 'All
Tables');
- ERROR: duplicate key violates unique constraint "sl_set-pkey"

と表示され、エラーになります。

テーブル名: _slony_test.sl_set の 中は 、 id=1 ,origin = 1,comment='All
Tables' しかありません。
_slony_test.sl_set の主キーは、idだとは確認しました。

ただ、もともとの発想なんですが、
ノードを追加する場合は、既存のクラスタにノードを追加するイメージでよろし
いでしょうか?
それとも、新たにクラスタを設置するイメージでしょうか?

対処方法など、どなたか、ご教授頂けると喜びます。
よろしくお願いします。






pgsql-jp メーリングリストの案内