Sorry I forgot to tell you that I have 2 differents replications .

> SERVER 1                      SERVER 2
> SCHEMA A      ------->                SCHEMA A  (CLUSTER NAME =
repli_general  )
> SCHEMA B      <-------                SCHEMA B   (CLUSTER NAME =
repli_local110 )

Now one script i use (slony-ctl ) :

#!/bin/bash
## EN: Slonik script for initialising replication
/usr/pgsql-9.3/bin/slonik <<_EOF_
    ## EN: Preamble file contains all useful connexions information
        
CLUSTER NAME = repli_local110 ;
NODE 101 ADMIN CONNINFO = 'dbname=RPP2 host=192.168.0.101 port=5432
user=slony password=password';
NODE 110 ADMIN CONNINFO = 'dbname=RPP2 host=192.168.0.110 port=5432
user=slony password=password';

    #--
    # Init the first node.  This creates the schema _repli_local110 
    # containing all replication system specific database objects.
    #--
    try{
        init cluster ( id=101, comment = 'repli_local110 : 101 - DATABASE -
192.168.0.101');
    }
    on error {
        echo 'Cluster 101 : ko' ;
        exit 1;
        }
    on success { echo 'Cluster 101 : OK' ; }

    # The other nodes.

   #--
   # Create the node 110 (slave) and tell the 2 nodes how to connect to
   # each other and how they should listen for events.
   #--

   try{
       store node (id = 110,
        EVENT NODE = 101,
        comment = 'DB DATABASE - Host 192.168.0.110 - Cluster
repli_local110');
    }
    on error {
        echo 'Store node 110 ko';
        exit 1;
        }
    on success {
        echo 'Store node 110 OK';
        }

    store path (server = 101, client = 110, conninfo='dbname=DATABASE
host=192.168.0.101 port=5432 user=slony password=123');

    store path (server = 110, client = 101, conninfo='dbname=DATABASE
host=192.168.0.110 port=5432 user=slony password=123');

        
    #--
    # 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 110.
    #--
    try{
        create set (id=1, origin=110, comment='Tables in DATABASE');
        # Tables

                set add table (set id=1, origin=101, id=67, fully qualified
name = 'local110.test_tata2', comment='table local110.test_tata2');

        # Sequences
    }
    on error {
        echo 'Creation Set : ko';
        exit 1;
        }
    on success {
        echo 'Creation Set : OK';
        }
    exit 0;
_EOF_

if [ $? -ne 0 ]; then
    error "CREATE SET" 3
    exit 1
fi

## EN: We start daemons. All on the same machine, which is
# the one on which that script is executed.
/usr/pgsql-9.3/bin/slon -f /home/slony1-ctl/slony-ctl/etc/slon.cfg
repli_local110 "dbname=DATABASE host=192.168.0.101 port=5432 user=slony
password=123"
>/home/slony1-ctl/slony-ctl/logs/repli_local110_DATABASE_101.log 2>&1 &
echo "daemon slon pour DATABASE - 192.168.0.101 demarré sur national101"
ssh/usr/pgsql-9.3/bin/slon -f /home/slony1-ctl/slony-ctl/etc/slon.cfg
repli_local110 "dbname=DATABASE host=192.168.0.110 port=5432 user=slony
password=123" >/home/slony/logs/repli_local110_DATABASE_110.log 2>&1 &
echo "daemon slon pour DATABASE - 192.168.0.110 demarré sur national101"

## EN: And now, subscription

echo "Souscription Set 1 par 101"
/usr/pgsql-9.3/bin/slonik <<_EOF_
    # ----
    # <preamble> file 
    # ----
    INCLUDE </home/slony1-ctl/slony-ctl/etc/repli_local110.preamble>

    # ----
    # Node 101 subscribes set 1
    # ----
    try{
        subscribe set ( id = 1, provider = 110, receiver = 101, forward =
yes);
    }
    on error {
        echo 'Souscription ko';
        exit 1;
        }
    on success {
        echo 'Souscription OK';
        }
_EOF_


if [ $? -ne 0 ]; then
    error "SUBSCRIBE SET" 3
    exit 1
fi
exit 0




-----Message d'origine-----
De : Steve Singer [mailto:[email protected]] 
Envoyé : mercredi 16 octobre 2013 15:29
À : Sebastien Marchand
Cc : [email protected]
Objet : Re: [Slony1-general] Problem slony 2.2 and pg 9.3 double replication

On 10/16/2013 09:17 AM, Sebastien Marchand wrote:
> Hi,
>
> I want do this :
>
> SERVER 1                      SERVER 2
> SCHEMA A      ------->                SCHEMA A
> SCHEMA B      <-------                SCHEMA B
>
> That works in slony 2.0.7/pg 9.0
>
> But with  slony 2.2 and postgresql 9.3
>
> SERVER 1                      SERVER 2        
> SCHEMA A      ------->                SCHEMA A        => OK
> SCHEMA B      <-------                SCHEMA B        => NOK
>
> I've got this error
>
> <stdin>:55: waiting for event (101,5000000004) to be  confirmed on 
> node 110
>
> Pg error :
>
> 2013-10-15 10:55:10.950 CEST >ERROR:  relation 
> "_sloncluster.sl_local_node_id" does not exist at character 30
> 2013-10-15 10:55:10.950 CEST >STATEMENT:  select last_value::int4 from 
> "_sloncluster".sl_local_node_id
>
> Sorry for my english... :(
>

The way you would do this is with two replication sets

clustername=sloncluster;
node 1 admin conninfo=.....
node 2 admin conninfo=.....

init cluster(id=1);
store node(id=2, event node=2);
store path(server=1,client=2,conninfo=....);
store path(server=2,client=1,conninfo=.....);

create set(id=1,origin=1);
set add table(set id=1, tables='schemaA\.*'); create set(id=2, origin=2);
set add table(set id=1, tables='schemaB\.*');

subscribe set(set id=1, provider,1,receiver=2); sync(id=1); wait for
event(origin=1, wait on=1,confirmed=2); subscribe set(set id=2,
provider=2,receiver=1); sync(id=2); wait for event(origin=2,wait
on=2,confirmed=1);


or something similiar to above should work the same in 2.1 and 2.2  (in
2.0 you would need explicit 'set add table' statements for each table and
maybe a few more 'wait for event' statements in the middle of the script).

Are you doing something significantly different?



_______________________________________________
Slony1-general mailing list
[email protected]
http://lists.slony.info/mailman/listinfo/slony1-general

Reply via email to