Magnus Hagander mha
Fri Aug 5 20:44:25 PDT 2005
People,

It is probably not totally uncommon to have multiple slon backends
running on the same machine, replicating different databases. For unix,
this is simple - you just start a separate slon daemon. For win32 it's
not as simple. I see three options for dealing with this on win32:

1) Do it the unix way, and require the user to install a separate
service for each database. This means we cannot use the installer to put
in the service. It will also require local admin rights in order to
admin slony, as well as making it harder to deal with complete
configuration from pgadmin. 
The advantage with this option is that this will have the least effect
on the codebase, and zero effect on the Unix code.

2) Implement the capability for Slon to deal with multiple replication
engines at the same time. 
The advantage with this option is that Unix people get to start a single
slon daemon as well. The disadvantage is that this is probably the most
complicated option, and will have a lot of impact on the current system.

3) Implement a "master slon service" that will start and control one or
more normal "slon" processes. It would read a separate config and just
launch several normal slons, keeping a lookout on them if they die, and
handle restarts etc. This could be done either only for win32, or for
both win32 and unix.
The advantage with this option is that single-instance slon is not
affected *at all*, and the code impact is minimal, while still helping
situations like the win32 one.


Doing option 3 specific for win32 will certianly make that part of the
code simpler, as it can make use of more win32 specific functions. I'm
doubtful if the functionality is actually needed under Unix - the
concept of starting multiple daemons (possibly just using a special
init-script) is fairly common there... That is, if option 3 is the way
to go at all.


Oh, and we must not forget - optoin 4, which I didn't think of at all,
and will learn about shortly.


I as personally leaning towards option 3 for win32 only, mainly because
I think it's what'll give us best functionality for the least amount of
work. 

What do people think? Which is the best way to proceed?



//Magnus



More information about the Slony1-general mailing list