Hi,

I've managed to get A replicating to B quite happily, but I'm having
trouble getting A -> B -> C.

Full scripts are attached, but basically I'm doing:

create set (id=1, origin=1, comment='Master');

set add table (set id=1, origin=1, id=1, fully qualified name =
'public.feed_details', comment='master feed_details table');


Starting the slon's on my 3 nodes

and then trying:


subscribe set ( id = 1, provider = 1, receiver = 2, forward = yes);

but when I try:

subscribe set ( id = 1, provider = 2, receiver = 3, forward = no);

It fails with:

ERROR:  Slony-I: provider 2 is not an active forwarding node for
replication set 1

I'm a little confused now, I would have thought the "forward=yes" on the
first subscribe makes it an active forwarding node?

I'm sure I'm missing something blindingly obvious, but trawls through
the docs haven't shown anything I can see.  Any comments/suggestions
welcome.

Thanks,

Mark


________________________________________________________________________
This email has been scanned for all known viruses by the MessageLabs SkyScan 
service.
slon $CLUSTERNAME "dbname=$MASTERDBNAME user=$REPLICATIONUSER host=$MASTERHOST" 
>& master.log &
slon $CLUSTERNAME "dbname=$WORK1DBNAME user=$REPLICATIONUSER host=$SLAVEHOST" 
>& work1.log &
slon $CLUSTERNAME "dbname=$WORK1SLAVEDBNAME user=$REPLICATIONUSER 
host=$SLAVEHOST" >& work1slave.log &

slonik <<_EOF_
         # ----
         # This defines which namespace the replication system uses
         # ----
         cluster name = $CLUSTERNAME;
    
         # ----
         # Admin conninfo's are used by the slonik program to connect
         # to the node databases.  So these are the PQconnectdb arguments
         # that connect from the administrators workstation (where
         # slonik is executed).
         # ----
         node 1 admin conninfo = 'dbname=$MASTERDBNAME host=$MASTERHOST 
user=$REPLICATIONUSER';
         node 2 admin conninfo = 'dbname=$WORK1DBNAME host=$SLAVEHOST 
user=$REPLICATIONUSER';
         node 3 admin conninfo = 'dbname=$WORK1SLAVEDBNAME host=$SLAVEHOST 
user=$REPLICATIONUSER';
    
         # ----
         # Node 2 subscribes set 1
         # ----
         subscribe set ( id = 1, provider = 1, receiver = 2, forward = yes);

         # ----
         # Node 3 subscribes set 2 from p2 and also set 1 from p2
         # ----
         subscribe set ( id = 1, provider = 2, receiver = 3, forward = no);
         subscribe set ( id = 2, provider = 2, receiver = 3, forward = no);
_EOF_

slonik <<_EOF_
        #--
        # define the namespace the replication system uses in our example it is
        # slony_example
        #--
        cluster name = $CLUSTERNAME;
    
        #--
        # admin conninfo's are used by slonik to connect to the nodes one for 
each
        # node on each side of the cluster, the syntax is that of PQconnectdb in
        # the C-API
        # --
        node 1 admin conninfo = 'dbname=$MASTERDBNAME host=$MASTERHOST 
user=$REPLICATIONUSER';
        node 2 admin conninfo = 'dbname=$WORK1DBNAME host=$SLAVEHOST 
user=$REPLICATIONUSER';
        node 3 admin conninfo = 'dbname=$WORK1SLAVEDBNAME host=$SLAVEHOST 
user=$REPLICATIONUSER';
    
        #--
        # init the first node.  Its id MUST be 1.  This creates the schema
        # _$CLUSTERNAME containing all replication system specific database
        # objects.
    
        #--
        init cluster ( id=1, comment = 'Master Node');
     
        #--
        # Slony-I organizes tables into sets.  The smallest unit a node can
        # subscribe is a set. 
        # The master or origin of the set is node 1.
        #--
        create set (id=1, origin=1, comment='Master FeedDetails table');
        set add table (set id=1, origin=1, id=1, fully qualified name = 
'public.feed_details', comment='master feed_details table');
    
        #--
        # Create the second node (the slave) tell the 2 nodes how to connect to
        # each other and how they should listen for events.
        #--
    
        store node (id=2, comment = 'Work1 node');
        store path (server = 1, client = 2, conninfo='dbname=$MASTERDBNAME 
host=$MASTERHOST user=$REPLICATIONUSER');
        store path (server = 2, client = 1, conninfo='dbname=$WORK1DBNAME 
host=$SLAVEHOST user=$REPLICATIONUSER');
        store listen (origin=1, provider = 1, receiver =2);
        store listen (origin=2, provider = 2, receiver =1);

        # --
        # Set for cascading feed details and replicating content data to 
underlying slave database
        # --
        create set (id=2, origin=2, comment='WORK1 Tables');
        set add table (set id=2, origin=2, id=2, fully qualified name = 
'public.content_details', comment='content_details table');
        set add table (set id=2, origin=2, id=3, fully qualified name = 
'public.content_entry', comment='content_entry table');
        set add table (set id=2, origin=2, id=4, fully qualified name = 
'public.META1', comment='META1 table');

        store node (id=3, comment = 'Work1Slave node');
        store path (server = 2, client = 3, conninfo='dbname=$WORK1DBNAME 
host=$SLAVEHOST user=$REPLICATIONUSER');
        store path (server = 3, client = 2, conninfo='dbname=$WORK1SLAVEDBNAME 
host=$SLAVEHOST user=$REPLICATIONUSER');
        store listen (origin=2, provider = 2, receiver =3);
        store listen (origin=3, provider = 3, receiver =2);
_EOF_

_______________________________________________
Slony1-general mailing list
[email protected]
http://gborg.postgresql.org/mailman/listinfo/slony1-general

Reply via email to