Sat Dec 4 23:10:09 PST 2004
- Previous message: [Slony1-general] Key (sub_provider, sub_receiver)=(1, 2) is not present in table "sl_path".
- Next message: [Slony1-general] large objects
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 12/4/2004 2:15 PM, Marc G. Fournier wrote:
> Now frustration sets in :( I just rebuilt everything, and am still
> getting the error reported in the last email ... so obviously I'm doing
> *something* wrong with my setting up ...
>
> So, let's do this in a nice long email ...
>
> I have one central server (db.hub.org) from which I want to replicate a
> dns_records table to multiple subscribers (at this point in time, just 2)
> ... one is saturn.hub.org (a US based server), and the other is
> neptune.hub.org (a server sitting in the same machine room as db.hub.org)
>
> Now, here are the steps I'm going through to "rebuild" ...
>
> 1. shutdown slon on all three servers (it was already down on
> saturn/neptune)
>
> 2. drop node/path for both node 2 and node 3
>
> 3. uninstall node 1 (which probably negates the need for 2, right?)
>
>
> there, that should remove all traces of slony ... right?
>
>
> 4. drop/create database on subscriber postgresql servers
>
> 5. reload database schema on subscriber databases
>
>
> at this point in time, still no slony installed/running
>
>
> 6. setup the master server for slony, using:
>
> slonik <<_EOF_
> cluster name = $CLUSTER;
>
> node 1 admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER';
>
> init cluster ( id = 1, comment = 'Node 1' );
>
> table add key ( node id = 1, fully qualified name = 'public.dns_records' );
>
> create set ( id = 1, origin = 1, comment = 'Distributed DNS Database' );
> set add table ( set id = 1, origin = 1,
> id = 1, fully qualified name = 'public.dns_records',
> key = serial,
> comment = 'public.dns_records' );
>
> _EOF_
>
> 7. setup neptune/saturn using the following (note node #s are changed
> appropriately):
>
> saturn:
>
> slonik <<_EOF_
> cluster name = $CLUSTER;
>
> node 1 admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER';
> node 2 admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$SLONY_USER';
>
> store node ( id = 2, comment = 'Node 2' );
> store path ( server = 1, client = 2,
> conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER');
> store path ( server = 2, client = 1,
> conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$SLONY_USER');
> store listen ( origin = 1, provider = 1, receiver = 2 );
> store listen ( origin = 2, provider = 2, receiver = 1 );
>
> subscribe set ( id = 1, provider = 1, receiver = 2, forward = no);
> _EOF_
>
> neptune:
>
> slonik <<_EOF_
> cluster name = $CLUSTER;
>
> node 1 admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER';
> node 3 admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$SLONY_USER';
>
> store node ( id = 3, comment = 'Node 3' );
> store path ( server = 1, client = 3,
> conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER');
> store path ( server = 3, client = 1,
> conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$SLONY_USER');
> store listen ( origin = 1, provider = 1, receiver = 3 );
> store listen ( origin = 3, provider = 3, receiver = 1 );
Here you are missing:
store listen (origin = 3, provider = 1, receiver = 2);
store listen (origin = 2, provider = 1, receiver = 3);
Even though the two don't seem to have much to do with each other, they
do need to listen for each others events.
This of course requires to put "node 2 admin conninfo ..." into the
script as well.
And you might want to add
wait for event (origin = 2, confirmed = 3);
wait for event (origin = 3, confirmed = 2);
here before the subscribe as well, so that the whole adding of node 3
has completely propagated before you subscribe.
Jan
>
> subscribe set ( id = 1, provider = 1, receiver = 3, forward = no);
> _EOF_
>
> 8. restart slon on master, which appears to start up fine:
>
> Dec 4 15:04:46 db slony_dns: CONFIG main: slon version 1.0.5 starting up
> Dec 4 15:04:46 db slony_dns: CONFIG main: local node id = 1
> Dec 4 15:04:46 db slony_dns: CONFIG main: loading current cluster configuration
> Dec 4 15:04:46 db slony_dns: CONFIG storeNode: no_id=2 no_comment='Node 2'
> Dec 4 15:04:46 db slony_dns: CONFIG storeNode: no_id=3 no_comment='Node 3'
> Dec 4 15:04:46 db slony_dns: CONFIG storePath: pa_server=2 pa_client=1 pa_conninfo="dbname=ams host=saturn.hub.org user=pgsql" pa_connretry=10
> Dec 4 15:04:46 db slony_dns: CONFIG storePath: pa_server=3 pa_client=1 pa_conninfo="dbname=ams host=neptune.hub.org user=pgsql" pa_connretry=10
> Dec 4 15:04:46 db slony_dns: CONFIG storeListen: li_origin=2 li_receiver=1 li_provider=2
> Dec 4 15:04:46 db slony_dns: CONFIG storeListen: li_origin=3 li_receiver=1 li_provider=3
> Dec 4 15:04:46 db slony_dns: CONFIG storeSet: set_id=1 set_origin=1 set_comment='Distributed DNS Database'
> Dec 4 15:04:46 db slony_dns: CONFIG main: configuration complete - starting threads
> Dec 4 15:04:46 db slony_dns: CONFIG enableNode: no_id=2
> Dec 4 15:04:46 db slony_dns: CONFIG enableNode: no_id=3
>
>
> 9. restart slon on neptune, and this is where it first fails:
>
> Dec 4 15:05:51 neptune slony_dns: CONFIG main: local node id = 3
> Dec 4 15:05:51 neptune slony_dns: CONFIG main: loading current cluster configuration
> Dec 4 15:05:51 neptune slony_dns: CONFIG storeNode: no_id=1 no_comment='Node 1'
> Dec 4 15:05:51 neptune slony_dns: CONFIG storeNode: no_id=2 no_comment='Node 2'
> Dec 4 15:05:51 neptune slony_dns: CONFIG storePath: pa_server=1 pa_client=3 pa_conninfo="dbname=ams host=db.hub.org user=pgsql" pa_connretry=10
> Dec 4 15:05:51 neptune slony_dns: CONFIG storeListen: li_origin=1 li_receiver=3 li_provider=1
> Dec 4 15:05:52 neptune slony_dns: CONFIG storeSet: set_id=1 set_origin=1 set_comment='Distributed DNS Database'
> Dec 4 15:05:52 neptune slony_dns: WARN remoteWorker_wakeup: node 1 - no worker thread
> Dec 4 15:05:52 neptune slony_dns: CONFIG storeSubscribe: sub_set=1 sub_provider=1 sub_forward='f'
> Dec 4 15:05:52 neptune slony_dns: WARN remoteWorker_wakeup: node 1 - no worker thread
> Dec 4 15:05:52 neptune slony_dns: CONFIG main: configuration complete - starting threads
> Dec 4 15:05:52 neptune slony_dns: CONFIG enableNode: no_id=1
> Dec 4 15:05:52 neptune slony_dns: CONFIG enableNode: no_id=2
> NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "dns_records__Slony-I_distributed_dns_rowID_key" for table "dns_records"
> CONTEXT: PL/pgSQL function "determineattkindserial" line 52 at execute statement
> Dec 4 15:05:58 neptune slony_dns: CONFIG enableSubscription: sub_set=1
> Dec 4 15:05:58 neptune slony_dns: ERROR remoteWorkerThread_1: "begin transaction; set transaction isolation level serializable; lock table "_distributed_dns".sl_config_lock; select "_distributed_dns".enableSubscription(1, 1, 2); notify "_distributed_dns_Event"; notify "_distributed_dns_Confirm"; insert into "_distributed_dns".sl_event (ev_origin, ev_seqno, ev_timestamp, ev_minxid, ev_maxxid, ev_xip, ev_type , ev_data1, ev_data2, ev_data3, ev_data4 ) values ('1', '13', '2004-12-04 15:04:48.854993', '84718467', '84718468', '', 'ENABLE_SUBSCRIPTION', '1', '1', '2', 'f'); insert into "_distributed_dns".sl_confirm (con_origin, con_received, con_seqno, con_timestamp) values (1, 3, '13', CURRENT_TIMESTAMP); commit transaction;" PGRES_FATAL_ERROR ERROR: insert or update on table "sl_subscribe" violates foreign key constraint "sl_subscribe-sl_path-ref"
> Dec 4 15:05:58 neptune slony_dns: DETAIL: Key (sub_provider,sub_receiver)=(1,2) is not present in table "sl_path".
> Dec 4 15:05:58 neptune slony_dns: INFO remoteListenThread_1: disconnecting from 'dbname=ams host=db.hub.org user=pgsql'
>
>
> My 'startup script' looks like:
>
> ============
> #!/bin/sh
>
> CLUSTER=distributed_dns
>
> DBNAME1=ams
> HOST1=db.hub.org
> PASS1=vacUlefot
>
> DBNAME2=ams
> HOST2=saturn.hub.org
> PASS1=vacUlefot
>
> SLONY_USER=pgsql
>
> /usr/local/bin/slon $CLUSTER "dbname=$DBNAME2 user=$SLONY_USER" | /usr/bin/logger -p local0.notice -t slony_dns
>
> ===========
>
> So, I'm obviously setting up my subscribers wrong ...
>
>
> ----
> Marc G. Fournier Hub.Org Networking Services (http://www.hub.org)
> Email: scrappy at hub.org Yahoo!: yscrappy ICQ: 7615664
> _______________________________________________
> Slony1-general mailing list
> Slony1-general at gborg.postgresql.org
> http://gborg.postgresql.org/mailman/listinfo/slony1-general
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck at Yahoo.com #
- Previous message: [Slony1-general] Key (sub_provider, sub_receiver)=(1, 2) is not present in table "sl_path".
- Next message: [Slony1-general] large objects
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-general mailing list