diff options
| author | Thomas G. Lockhart | 2000-12-20 17:22:35 +0000 |
|---|---|---|
| committer | Thomas G. Lockhart | 2000-12-20 17:22:35 +0000 |
| commit | 54f2b601ef6e55de0e70d2ec95f4cb3250ffbd23 (patch) | |
| tree | 5a2e98e67e39ec9c2f7020dcaccc122cdd53115d /contrib/rserv/README.rserv | |
| parent | 96edf0c1850f9cecdd328ac7cfa2daa80b19422e (diff) | |
rserv replication toolkit from Vadim Mikheev.
Diffstat (limited to 'contrib/rserv/README.rserv')
| -rw-r--r-- | contrib/rserv/README.rserv | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/contrib/rserv/README.rserv b/contrib/rserv/README.rserv new file mode 100644 index 00000000000..5ccd87b3459 --- /dev/null +++ b/contrib/rserv/README.rserv @@ -0,0 +1,128 @@ +erServer demonstration implementation +(c) 2000, Vadim Mikheev and Thomas Lockhart, PostgreSQL Inc. + +Version 0.1: + Replicates a master database to a single slave database. + Tested under Linux (Mandrake 7.2). + +Requirements: + +- PostgreSQL >= 7.0.X + A separate Makefile is required for PostgreSQL 7.0.x and earlier +- Perl5 and the PostgreSQL perl interface +- TCL and the PostgreSQL tcl interface (for demo only) + + +How to compile: + +- make all +- make install + +Scripts and libraries are installed in places which are consistant +with the way other contrib/ code is installed; underneath the core +items in a contrib/ directory. + + +The toolset: + +MasterInit dbname + sets up structures and user-defined functions for a master + database. + +SlaveInit dbname + sets up structures for a slave database. Does not include triggers, + but only bookkeeping tables. + +MasterAddTable dbname table column + sets up triggers for the specified table and column. Note that this + column must be updated for replication to occur. + +SlaveAddTable dbname table column + sets up bookkeeping for the specified table and column. + +Replicate masterdb slavedb + actually replicate changes from a master to single slave. Note that + this must be repeated to replicate to multiple slaves, but the + bookkeeping for each slave is handled separately so each can be + updated at different times and with different sets of changes. + +GetSyncID [--noverbose] slavedb + returns the last syncid the specified slave has seen. May be used + in conjunction with CleanLog using the --noverbose option. + +CleanLog masterdb syncid + removes obsolete entries in the master database replication log + table up to the specified replication sequence number. + +Other utilities: + +PrepareSnapshot + build a file of replication information from the specified masterdb. + +ApplySnapshot + use a file of replication information to apply to the specified + slavedb. + + +How to run a demo: + +Run the InitRservTest script. It will create two local databases +'master' & 'slave' with table 'test' in them. It accepts the following +arguments: + --help + Print a usage message and quit. + --user name + Access the database with another username. + --host name + Access a remote database. Note that the shared library *must* be + visible in the same path as installed on the build machine. + masterdb + slavedb + Names of test databases. Defaults to 'master' and 'slave', + respectively. + +Once the test databases are set up, simply updating the master table +is sufficient to log a replication event. You can update the table +test then run "Replicate master slave", or you can use the demo +program RservTest. + +Run the tcl/tk GUI demo program, RservTest. It has a single window, +which has four buttons and three data entry boxes. + + -------------------------------------------------- + | PostgreSQL Asynchronous Replication | + | Master Slave | + | < master > < slave > | + | | + | [ Update ] < > | + | [ Replicate ] | + | [ Show ] ____________ | + | | + | [ Quit ] | + | | + -------------------------------------------------- + +The demo has the following behaviors: + +If you enter a string into the data entry field to the right of +[Update], then that string will be used to either update the master +database or to query the slave database. + +If you click [Update], then the string in the data entry box will be +entered into the master database. + +If you click [Replicate], then all changes since the last replication +will be propagated to the slave database. + +If you click [Show], then the slave database will be queried to find +the string in the data entry box to the right of the [Update] +button. If the string does not (yet) exist in the slave database, then +"n/a" will appear to the right of the [Show] button. If the string +does exist in the slave database, then it will be printed to the right +of the [Show] button. + + +Todo: +1. Support for multiple slave servers. +2. Explicit support for master/slave failover. +3. More docs. |
