slony_logshipping -- slony_logshippping daemon

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, chosen from the following:

    • h

      display this help text and exit

    • v

      display program version and exit

    • q

      quiet mode

    • l

      cause running daemon to reopen its logfile

    • r

      cause running daemon to resume after error

    • t

      cause running daemon to enter smart shutdown mode

    • T

      cause running daemon to enter immediate shutdown mode

    • c

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

    • f

      stay in foreground (don't daemonize)

    • w

      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 "database-connected" 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 "smart shutdown" 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 system(3).

    An "@" 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.