1- DBMirror -Postgres Database Mirroring
1+ DBMirror -PostgreSQL Database Mirroring
22===================================================
33
44
5- DBMirror is a database mirroring system developed for thePostgres
5+ DBMirror is a database mirroring system developed for thePostgreSQL
66database Written and maintained by Steven Singer(ssinger@navtechinc.com)
77
88
@@ -54,6 +54,13 @@ If the transaction has been sent to all know slave hosts (All entries
5454in the MirrorHost table) then all records of it are purged from the
5555Pending tables.
5656
57+ Requirments:
58+ ---------------------------------
59+ -PostgreSQL-7.4 (Older versions are no longer supported)
60+ -Perl 5.6(Other versions might work)
61+ -PgPerl (http://gborg.postgresql.org/project/pgperl/projdisplay.php)
62+
63+
5764Installation Instructions
5865------------------------------------------------------------------------
5966
@@ -66,33 +73,11 @@ time a row inside of a table being mirrored changes.
6673
6774To build the trigger run make on the "Makefile" in the DBMirror directory.
6875
69- Postgres-7.3 & 7.4 Make Instructions:
76+ PostgreSQL- 7.4 Make Instructions:
7077
7178 If you have already run "configure" in the pgsql-server directory
7279 then run "make" in the dbmirror directory to compile the trigger.
7380
74- Postgres-7.1 & Postgres-7.2 Make Instructions:
75-
76- The included Makefile is not compatible with postgres 7.1 and 7.2
77- The trigger will need to be built by hand.
78-
79- Run the following commands
80-
81- gcc -fpic -I/usr/local/pgsql/include/server -c pending.c -DNOSCHEMAS -DNODROPCOLUMN
82- ld -shared -o pending.so pending.o
83-
84- Assuming the postgres include files are in /usr/local/pgsql/include/server.
85-
86- Postgres-7.1.x installations should change this to
87- /usr/local/pgsql/include (The server part is for 7.2+)
88-
89- If you have installed the postgres include files to another location then
90- modify the include path to reflect this.
91-
92- Compiling the trigger by hand requires that all postgres headers be installed
93- ,this is accomplished in postgresql(7.1 or 7.2) by running
94- "make install-all-headers" in the postgres source directory.
95-
9681
9782You should now have a file named pending.so that contains the trigger.
9883
@@ -109,7 +94,7 @@ choose to install the trigger elsewhere.
10994This file contains SQL commands to setup the Mirroring environment.
11095This includes
11196
112- -TellingPostgres about the "recordchange" trigger function.
97+ -TellingPostgreSQL about the "recordchange" trigger function.
11398-Creating the Pending,PendingData, MirrorHost, MirroredTransaction tables
11499
115100
@@ -120,15 +105,6 @@ To execute the script use psql as follows
120105where MyDatabaseName is the name of the database you wish to install mirroring
121106on(Your master).
122107
123- Postgres-7.1 and 7.2 Notes:
124- -The syntax for creating a trigger function changed in Postgres-7.3.
125- Change the line in MirrorSetup.sql from
126-
127- CREATE FUNCTION "recordchange" () RETURNS trigger AS
128-
129- to
130- CREATE FUNCTION "recordchange" () RETURNS OPAQUE AS
131-
132108
1331093) Create slaveDatabase.conf files.
134110
@@ -185,8 +161,7 @@ INSERT INTO "MirrorHost" ("HostName") VALUES ('mySlaveMachine.mycompany.com');
185161
186162DBMirror.pl is the perl script that handles the mirroring.
187163
188- It requires the Perl library Pg(See src/interfaces/perl5 in the postgres
189- source distribution).
164+ It requires the Perl library Pg(See http://gborg.postgresql.org/project/pgperl/projdisplay.php)
190165
191166It takes its configuration file as an argument(The one from step 3)
192167One instance of DBMirror.pl runs for each slave machine that is receiving
@@ -223,22 +198,6 @@ TODO(Current Limitations)
223198-Batching SQL commands in DBMirror for better performance over WAN's.
224199-Better support for dealing with Schema changes.
225200
226- Tested Platforms:
227- ------------------
228-
229- DBMirror has been tested on the following configurations but should
230- work on any platform with Postgres >= 7.1 and Perl 5.6.
231-
232- RedHat Linux 7.1 & 6.2
233- -Postgres 7.1.2
234- -Perl 5.6
235-
236- Mandrake Linux 8.0(Limited Testing)
237- -Postgres 7.2
238- -Postgres 7.3
239- -Postgres 7.4
240- -Perl 5.6
241-
242201
243202Steven Singer
244203Navtech Systems Support Inc.