slony_logshipper TOOL

slony_logshipper is a tool designed to help apply logs. It runs as a daemon and scans the archive directory for new .SQL files which it then applies to the target database. It can be run with three sorts of parameters:

OPTIONS

•

Options, chosen from the following:

•

\*(T<h\*(T>

display this help text and exit

•

\*(T<v\*(T>

display program version and exit

•

\*(T<q\*(T>

quiet mode

•

\*(T<l\*(T>

cause running daemon to reopen its logfile

•

\*(T<r\*(T>

cause running daemon to resume after error

•

\*(T<t\*(T>

cause running daemon to enter smart shutdown mode

•

\*(T<T\*(T>

cause running daemon to enter immediate shutdown mode

•

\*(T<c\*(T>

destroy existing semaphore set and message queue (use with caution)

•

\*(T<f\*(T>

stay in foreground (don't daemonize)

•

\*(T<w\*(T>

enter smart shutdown mode immediately

•

A specified log shipper configuration file

This configuration file consists of the following specifications:

•

logfile = './offline_logs/logshipper.log';

Where the log shipper will leave messages.

•

cluster name = 'T1';

Cluster name

•

destination database = 'dbname=slony_test3';

Optional conninfo for the destination database. If given, the log shipper will connect to this database, and apply logs to it.

•

archive dir = './offline_logs';

The archive directory is required when running in \(oqdatabase-connected\(cq mode to have a place to scan for missing (unapplied) archives.

•

destination dir = './offline_result';

If specified, the log shipper will write the results of data massaging into result logfiles in this directory.

•

max archives = 3600;

This fights eventual resource leakage; the daemon will enter \(oqsmart shutdown\(cq mode automatically after processing this many archives.

•

ignore table "public"."history";

One may filter out single tables from log shipped replication

•

ignore namespace "public";

One may filter out entire namespaces from log shipped replication

•

rename namespace "public"."history" to "site_001"."history";

One may rename specific tables.

•

rename namespace "public" to "site_001";

One may rename entire namespaces.

•

post processing command = 'gzip -9 $inarchive';

Pre- and post-processing commands are executed via \*(T<system(3)\*(T>.

An \(oq@\(cq as the first character causes the exit code to be ignored. Otherwise, a nonzero exit code is treated as an error and causes processing to abort.

Pre- and post-processing commands have two further special variables defined:

•

$inarchive - indicating incoming archive filename

•

$outnarchive - indicating outgoing archive filename

•

error command = ' ( echo "archive=$inarchive" echo "error messages:" echo "$errortext" ) | mail -s "Slony log shipping failed" postgres@localhost ';

The error command indicates a command to execute upon encountering an error. All logging since the last successful completion of an archive is available in the $errortext variable.

In the example shown, this sends an email to the DBAs upon encountering an error.

•

Archive File Names

Each filename is added to the SystemV Message queue for processing by a slony_logshipper process.