Fri Nov 19 23:40:07 PST 2004
- Previous message: [Slony1-commit] By cbbrowne: These scripts were at one point generating multiple slonik
- Next message: [Slony1-commit] By cbbrowne: Numerous changes to FAQ and to other documentation in the
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Log Message:
-----------
Basic tutorial now allows having Slony-I nodes on separate hosts
Modified Files:
--------------
slony1-engine/doc/howto:
slony-I-basic-mstr-slv.txt (r1.15 -> r1.16)
-------------- next part --------------
Index: slony-I-basic-mstr-slv.txt
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/doc/howto/slony-I-basic-mstr-slv.txt,v
retrieving revision 1.15
retrieving revision 1.16
diff -Ldoc/howto/slony-I-basic-mstr-slv.txt -Ldoc/howto/slony-I-basic-mstr-slv.txt -u -w -r1.15 -r1.16
--- doc/howto/slony-I-basic-mstr-slv.txt
+++ doc/howto/slony-I-basic-mstr-slv.txt
@@ -1,4 +1,5 @@
Replicating Your First Database
+--------------------------------
In this example, we will be replicating a brand new pgbench database. The
mechanics of replicating an existing database are covered here, however we
@@ -6,17 +7,19 @@
non-production database.
The Slony-I replication engine is trigger-based, allowing us to replicate
-databases (or portions thereof) running under the same postmaster.
+databases (or portions thereof) running under the same postmaster. More
+commonly, databases are replicated from one host to another.
-This example will show how to replicate the pgbench database running on
-localhost (master) to the pgbench slave database also running on localhost
-(slave). We make a couple of assumptions about your PostgreSQL configuration:
+This example shows how to replicate a master database, created with pgbench,
+to a slave database. The master and slave can both be on the same cluster
+or on separate hosts. We make a couple of assumptions about your PostgreSQL
+configuration:
1. You have tcpip_socket=true in your postgresql.conf and
-2. You have localhost set to trust in pg_hba.conf
+2. You have enabled access in your cluster(s) via pg_hba.conf.
-The REPLICATIONUSER needs to be PostgreSQL superuser. This is typically
-postgres or pgsql.
+The MASTERDBA (and SLAVEDBA) users need to be PostgreSQL
+superusers. This is typically postgres or pgsql.
You should also set the following shell variables:
@@ -25,7 +28,10 @@
SLAVEDBNAME=pgbenchslave
MASTERHOST=localhost
SLAVEHOST=localhost
-REPLICATIONUSER=pgsql
+MASTERPORT=5432
+SLAVEPORT=5432
+MASTERDBA=postgres
+SLAVEDBA=postgres
PGBENCHUSER=pgbench
Here are a couple of examples for setting variables in common shells:
@@ -37,27 +43,29 @@
Creating the pgbenchuser
-createuser -A -D $PGBENCHUSER
+ createuser -A -D -U $MASTERDBA -h $MASTERHOST -p $MASTERPORT $PGBENCHUSER
-Preparing the databases
+ # And if you're replicating to separate cluster, create the user there...
+ createuser -A -D -U $SLAVEDBA -h $SLAVEHOST -p $SLAVEPORT $PGBENCHUSER
-createdb -O $PGBENCHUSER -h $MASTERHOST $MASTERDBNAME
-createdb -O $PGBENCHUSER -h $SLAVEHOST $SLAVEDBNAME
+Preparing the databases
-pgbench -i -s 1 -U $PGBENCHUSER -h $MASTERHOST $MASTERDBNAME
+ createdb -O $PGBENCHUSER -h $MASTERHOST -p $MASTERPORT $MASTERDBNAME
+ createdb -O $PGBENCHUSER -h $SLAVEHOST -p $SLAVEPORT $SLAVEDBNAME
+ pgbench -i -s 1 -U $PGBENCHUSER -h $MASTERHOST -p $MASTERPORT $MASTERDBNAME
Because Slony-I depends on the databases having the pl/pgSQL procedural
language installed, we better install it now. It is possible that you have
installed pl/pgSQL into the template1 database in which case you can skip this
step because it's already installed into the $MASTERDBNAME.
-createlang -h $MASTERHOST plpgsql $MASTERDBNAME
+ createlang -h $MASTERHOST -p $MASTERPORT plpgsql $MASTERDBNAME
Slony-I does not yet automatically copy table definitions from a master when a
slave subscribes to it, so we need to import this data. We do this with
pg_dump.
-pg_dump -s -U $REPLICATIONUSER -h $MASTERHOST $MASTERDBNAME | psql -U $REPLICATIONUSER -h $SLAVEHOST $SLAVEDBNAME
+ pg_dump -s -U $MASTERDBA -h $MASTERHOST -p $MASTERPORT $MASTERDBNAME | psql -U $SLAVEDBA -h $SLAVEHOST -p $SLAVEPORT $SLAVEDBNAME
To illustrate how Slony-I allows for on the fly replication subscription, lets
start up pgbench. If you run the pgbench application in the foreground of a
@@ -67,9 +75,9 @@
The typical command to run pgbench would look like:
-pgbench -s 1 -c 5 -t 1000 -U $PGBENCHUSER -h $MASTERHOST $MASTERDBNAME
+ pgbench -s 1 -c 5 -t 10 -U $PGBENCHUSER -h $MASTERHOST -p $MASTERPORT $MASTERDBNAME
-This will run pgbench with 5 concurrent clients each processing 1000
+This will run pgbench with 5 concurrent clients each processing 10
transactions against the pgbench database running on localhost as the pgbench
user.
@@ -95,8 +103,8 @@
# 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=$SLAVEDBNAME host=$SLAVEHOST user=$REPLICATIONUSER';
+ node 1 admin conninfo = 'dbname=$MASTERDBNAME host=$MASTERHOST port=$MASTERPORT user=$MASTERDBA';
+ node 2 admin conninfo = 'dbname=$SLAVEDBNAME host=$SLAVEHOST port=$SLAVEPORT user=$SLAVEDBA';
#--
# init the first node. Its id MUST be 1. This creates the schema
@@ -136,8 +144,8 @@
#--
store node (id=2, comment = 'Slave node');
- store path (server = 1, client = 2, conninfo='dbname=$MASTERDBNAME host=$MASTERHOST user=$REPLICATIONUSER');
- store path (server = 2, client = 1, conninfo='dbname=$SLAVEDBNAME host=$SLAVEHOST user=$REPLICATIONUSER');
+ store path (server = 1, client = 2, conninfo='dbname=$MASTERDBNAME host=$MASTERHOST port=$MASTERPORT user=$MASTERDBA');
+ store path (server = 2, client = 1, conninfo='dbname=$SLAVEDBNAME host=$SLAVEHOST port=$SLAVEPORT user=$SLAVEDBA');
store listen (origin=1, provider = 1, receiver =2);
store listen (origin=2, provider = 2, receiver =1);
_EOF_
@@ -151,11 +159,13 @@
On $MASTERHOST the command to start the replication engine is
-slon $CLUSTERNAME "dbname=$MASTERDBNAME user=$REPLICATIONUSER host=$MASTERHOST"
+ slon $CLUSTERNAME "dbname=$MASTERDBNAME user=$MASTERDBA host=$MASTERHOST port=$MASTERPORT"
Likewise we start the replication system on node 2 (the slave)
-slon $CLUSTERNAME "dbname=$SLAVEDBNAME user=$REPLICATIONUSER host=$SLAVEHOST"
+ # And if you're replicating to separate host, you might want to run
+ # this on the slave host, but not necessary for this example ...
+ slon $CLUSTERNAME "dbname=$SLAVEDBNAME user=$SLAVEDBA host=$SLAVEHOST port=$SLAVEPORT"
Even though we have the slon running on both the master and slave and they are
both spitting out diagnostics and other messages, we aren't replicating any
@@ -178,8 +188,8 @@
# 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=$SLAVEDBNAME host=$SLAVEHOST user=$REPLICATIONUSER';
+ node 1 admin conninfo = 'dbname=$MASTERDBNAME host=$MASTERHOST port=$MASTERPORT user=$MASTERDBA';
+ node 2 admin conninfo = 'dbname=$SLAVEDBNAME host=$SLAVEHOST port=$SLAVEPORT user=$SLAVEDBA';
# ----
# Node 2 subscribes set 1
@@ -211,7 +221,7 @@
#!/bin/sh
echo -n "**** comparing sample1 ... "
-psql -U $REPLICATIONUSER -h $MASTERHOST $MASTERDBNAME >dump.tmp.1.$$ <<_EOF_
+psql -U $MASTERDBA -h $MASTERHOST -p $MASTERPORT $MASTERDBNAME >dump.tmp.1.$$ <<_EOF_
select 'accounts:'::text, aid, bid, abalance, filler
from accounts order by aid;
select 'branches:'::text, bid, bbalance, filler
@@ -222,7 +232,7 @@
"_Slony-I_${CLUSTERNAME}_rowID"
from history order by "_Slony-I_${CLUSTERNAME}_rowID";
_EOF_
-psql -U $REPLICATIONUSER -h $SLAVEHOST $SLAVEDBNAME >dump.tmp.2.$$ <<_EOF_
+psql -U $SLAVEDBA -h $SLAVEHOST -p $SLAVEPORT $SLAVEDBNAME >dump.tmp.2.$$ <<_EOF_
select 'accounts:'::text, aid, bid, abalance, filler
from accounts order by aid;
select 'branches:'::text, bid, bbalance, filler
- Previous message: [Slony1-commit] By cbbrowne: These scripts were at one point generating multiple slonik
- Next message: [Slony1-commit] By cbbrowne: Numerous changes to FAQ and to other documentation in the
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list