In this example, a master server is setup with two direct slaves. This example was written and tested using Slony-I v1.2.11 and PostgreSQL 8.2.5, running on a single Windows XP machine. The PostgreSQL pgbench utility is used to generate the test schema and workload.
1) Create 3 databases, master, slave1 and slave2 and ensure pl/pgsql is setup in each.
2) Create a pgbench schema in the master database:
> pgbench -i -U postgres master3) Add a primary key called history_pkey to the history table on the tid, bid and aid columns.
4) Create a schema-only dump of the master database, and load it into slave1 and slave2:
> pg_dump -s -U postgres master > schema.sql5) Create Slony config files for each slon engine (daemon on *nix). The files should contain just the following two lines:
> psql -U postgres slave1 < psql -U postgres slave2
cluster_name='pgbench'Create a file for each database, adjusting the dbname parameter as required and adding any other connection options that may be needed. (Windows only) Install the Slony-I service: > slon -regservice Slony-I
conn_info='host=127.0.0.1 port=5432 user=postgres dbname=master'
6) Register each of the engines (this is only necessary on Windows - on *nix the slon daemons may be started individually and given the path to the config file on the command line using the -f option):
> slon -addengine Slony-I C:\slony\master.conf7) In pgAdmin under the Replication node in the master database, create a new Slony-I cluster using the following options:
> slon -addengine Slony-I C:\slony\slave1.conf
> slon -addengine Slony-I C:\slony\slave2.conf
Join existing cluster: Unchecked8) Under the Replication node, create a Slony-I cluster in each of the slave databases using the following options:
Cluster name: pgbench
Local node: 1 Master node
Admin node: 99 Admin node
Join existing cluster: Checked
Server: <Select the server containing the master database>
Database: master
Cluster name: pgbench
Local node: 10 Slave node 1
Admin node: 99 - Admin node
Join existing cluster: Checked9) Create Paths on the master to both slaves, and on each slave back to the master. Create the paths under each node on the master, using the connection strings specified in the slon config files. Note that future restructuring of the cluster may require additional paths to be defined.
Server: <Select the server containing the master database>
Database: master
Cluster name: pgbench
Local node: 20 Slave node 2
Admin node: 99 - Admin node
10) Create a Replication Set on the master using the following settings:
ID: 111) Add the tables to the replication set using the following settings:
Comment: pgbench set
Table: public.accounts12) On the master node, create a new subscription for each slave using the following options:
ID: 1
Index: accounts_pkey
Table: public.branches
ID: 2
Index: branches_pkey
Table: public.history
ID: 3
Index: history_pkey
Table: public.tellers
ID: 4
Index: tellers_pkey
Origin: 113) Start the slon service (or daemons on *nix):
Provider: 1 - Master node
Receiver: 10 - Slave node 1
Origin: 1
Provider: 1 - Master node
Receiver: 20 - Slave node 2
> net start Slony-I14) Initial replication should begin and can be monitored on the statistics tab in pgAdmin for each node. The pgbench utility may be run against the master database to generate a test workload.