diff options
author | ivan <ivan> | 2007-03-06 19:56:42 +0000 |
---|---|---|
committer | ivan <ivan> | 2007-03-06 19:56:42 +0000 |
commit | 2b00700a730f73846ced46b90b8622e6a0e1a2b6 (patch) | |
tree | 79b700804dab27f8b0288c36642d907090bc4f9e /bin | |
parent | d7d10f0b3f575f75ac892257a3dfa26cc24d6935 (diff) |
slight update for slony setup script
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/slony-setup | 76 |
1 files changed, 66 insertions, 10 deletions
diff --git a/bin/slony-setup b/bin/slony-setup index b384bb9f7..0798c1a03 100755 --- a/bin/slony-setup +++ b/bin/slony-setup @@ -1,35 +1,56 @@ #!/usr/bin/perl # -# hack to update/add read-only permissions for a user on the db -# -# usage: pg-readonly freesideuser readonlyuser +# slony replication setup +# +# usage: slony-setup freesideuser use strict; use DBI; use FS::UID qw(adminsuidsetup); use FS::Record qw(dbdef); -my $user = shift or die &usage; +my $user = shift or die "usage: slony-setup username\n"; adminsuidsetup($user); #--- -#su postgres -c 'createlang plpgsql freeside' - -#--- - -my $MASTERHOST = '172.21.0.204'; -my $SLAVEHOST = '172.21.0.205'; +my $MASTERHOST = '192.168.20.10'; +my $SLAVEHOST = '192.168.20.50'; #my $REPLICATIONUSER='pgsql'; my $REPLICATIONUSER='postgres'; +#-------- + +print <<END; + +#on slave: +useradd freeside +cp -pr /etc/skel /home/freeside +chown -R freeside /home/freeside + +su postgres -c 'createuser freeside' #n y n +su freeside -c 'createdb freeside' + +#on master: +su postgres -c 'createlang plpgsql freeside' + +pg_dump -s -U $REPLICATIONUSER -h $MASTERHOST freeside | psql -U $REPLICATIONUSER -h $SLAVEHOST freeside + +END + +#-------- + #drop set ( id = 1, origin = 1); print <<END; +#on master: +slonik <<_EOF_ + cluster name = freeside; node 1 admin conninfo = 'dbname=freeside host=$MASTERHOST user=$REPLICATIONUSER'; node 2 admin conninfo = 'dbname=freeside host=$SLAVEHOST user=$REPLICATIONUSER'; init cluster ( id=1, comment = 'Master Node'); + create set (id=1, origin=1, comment='All freeside tables'); END @@ -43,11 +64,46 @@ foreach my $table ( dbdef->tables ) { } print <<END; + store node (id=2, comment = 'Slave node'); store path (server = 1, client = 2, conninfo='dbname=freeside host=$MASTERHOST user=$REPLICATIONUSER'); store path (server = 2, client = 1, conninfo='dbname=freeside host=$SLAVEHOST user=$REPLICATIONUSER'); store listen (origin=1, provider = 1, receiver =2); store listen (origin=2, provider = 2, receiver =1); + +_EOF_ END +print <<END; + +### start slon processes (both machines) (this is debian-specific) +mkdir /etc/slony1/freeside + +cat >/etc/slony1/freeside/slon.conf <<_EOF_ +# Set the cluster name that this instance of slon is running against +# default is to read it off the command line +cluster_name='freeside' + +# Set slon's connection info, default is to read it off the command line +conn_info='host=localhost port=5432 dbname=freeside user=postgres' +_EOF_ + +/etc/init.d/slony1 start + +END + + +print <<END; +#on master: +slonik <<_EOF_ + +cluster name = freeside; + +node 1 admin conninfo = 'dbname=freeside host=$MASTERHOST user=$REPLICATIONUSER'; +node 2 admin conninfo = 'dbname=freeside host=$SLAVEHOST user=$REPLICATIONUSER'; + +subscribe set ( id = 1, provider = 1, receiver = 2, forward = no); + +_EOF_ +END |