Christopher Browne cbbrowne
Tue Feb 8 21:03:49 PST 2005
James Black <jfb at iparadigms.com> writes:
> Hello, all,
>
> Slony 1.0.5, Pg 7.4.6, Linux x86.  Growing load is forcing us to add a
> new machine into our Slony master->slave configuration, and before I
> start firing slonik commands off, I'd like to make sure that I
> understand exactly what I will be doing.
>
> Assume that the master machine is node id #1, and the existing client,
> id #2; in addition, master provides set #1, to which the client
> subscribes.  We will add the new machine in at node id #3.  Also, the
> client nodes will not have any contact with each other -- our
> failover, for various reasons not related to Slony, is un-automatable
> (sic.)
>
> 1. Copy the existing schema (sans the _${CLUSTER_NAME} namespace) to
> the new machine;
>
> 2. run the following script on the master;
>
> NODE 3 ADMIN CONNINFO = '${SLAVE2_CONNINFO}';
>
> STORE NODE (id = 3, comment = 'New slave node' );
> STORE PATH (server = 1, client = 3, conninfo = '${SLAVE2_CONNINFO}';
> STORE PATH (server = 3, client = 1, conninfo = '${MASTER_CONNINFO}';
> STORE LISTEN (origin = 1, receiver = 3);
> SUBSCRIBE SET (id = 1, provider = 1, receiver = 3, forward = no);
>
> 3. start the slon daemon on the client machine;
> 4. and stand back.
>
> Is this complete?  Are there any caveats?

This is not quite complete, as node 3 needs to be cognizant of node 2
as well as node 3.

I'd be inclined to configure connectivity (e.g. - STORE PATH) between
nodes 2 and 3, as well; that would probably introduce:
 STORE PATH (server = 2, client = 3, conninfo = '${SLAVE2_CONNINFO}';
 STORE PATH (server = 3, client = 2, conninfo = '${SLAVE1_CONNINFO}';

You DEFINITELY need more STORE LISTEN entries, as events will
definitely NOT propagate properly with this configuration.

You need, at least:

 store listen (origin = 1, receiver = 3, provider = 1);
 store listen (origin = 3, receiver = 1, provider = 3);
 store listen (origin = 2, receiver = 3, provider = 1);  # might be replaced; see below
 store listen (origin = 3, receiver = 2, provider = 1);  # might be replaced; see below

If you add the extra STORE PATHs I suggested, then replace the last two lines with...
 store listen (origin = 2, receiver = 3, provider = 2);
 store listen (origin = 3, receiver = 2, provider = 3);

<http://linuxdatabases.info/info/listenpaths.html>

> PS: I would be interested in contributing some of our experiences in
> migrating from dbmirror to Slony to a documentation project; does
> such a creature exist?

I have collected all the docs I have been able to find and added them
into Slony-I CVS in DocBook form.  That's what is published at the URL
below.

I would be more than happy to add additional documentation in; if you
are familiar with DocBook, then describing your experience in the form
of a DocBook <ARTICLE> would probably be ideal.
-- 
"cbbrowne","@","ca.afilias.info"
<http://linuxdatabases.info/info/slony.html>
Christopher Browne
(416) 673-4124 (land)


More information about the Slony1-general mailing list