Provided by: slony1-2-bin_2.2.4-3_amd64 bug

NAME

       slon - Slony-I daemon

SYNOPSIS

       slon [option]... [clustername] [conninfo]

DESCRIPTION

       slon  is  the  daemon application that ‘runs’ Slony-I replication. A slon instance must be
       run for each node in a Slony-I cluster.

OPTIONS

       -d log_level
              The log_level specifies which levels of debugging messages slon should display when
              logging its activity.

              The nine levels of logging are:

              • Fatal

              • Error

              • Warn

              • Config

              • Info

              • Debug1

              • Debug2

              • Debug3

              • Debug4

       The  first  five non-debugging log levels (from Fatal to Info) are always displayed in the
       logs. In early versions of Slony-I, the ‘suggested’ log_level value  was  2,  which  would
       list  output  at  all  levels  down  to  debugging  level  2.  In Slony-I version 2, it is
       recommended to set log_level to 0; most of the consistently interesting log information is
       generated at levels higher than that.

       -s SYNC check interval
              The  sync_interval, measured in milliseconds, indicates how often slon should check
              to see if a SYNC should be introduced.  Default  is  2000  ms.  The  main  loop  in
              sync_Thread_main()  sleeps  for  intervals  of  sync_interval  milliseconds between
              iterations.

              Short sync check intervals keep  the  origin  on  a  ‘short  leash’,  updating  its
              subscribers  more  frequently. If you have replicated sequences that are frequently
              updated without there being tables that are affected, this keeps there  from  being
              times when only sequences are updated, and therefore no syncs take place

              If  the node is not an origin for any replication set, so no updates are coming in,
              it is somewhat wasteful for this value to be much  less  the  sync_interval_timeout
              value.

       -t SYNC interval timeout
              At  the  end of each sync_interval_timeout timeout period, a SYNC will be generated
              on the ‘local’ node even if there has been no replicable data  updated  that  would
              have caused a SYNC to be generated.

              If  application  activity  ceases, whether because the application is shut down, or
              because human users have gone home and stopped  introducing  updates,  the  slon(1)
              will  iterate  away, waking up every sync_interval milliseconds, and, as no updates
              are being made, no SYNC events would be generated. Without this timeout  parameter,
              no SYNC events would be generated, and it would appear that replication was falling
              behind.

              The sync_interval_timeout value will lead to eventually  generating  a  SYNC,  even
              though there was no real replication work to be done. The lower that this parameter
              is set, the more frequently slon(1) will generate SYNC events when the  application
              is not generating replicable activity; this will have two effects:

              • The system will do more replication work.

                (Of  course,  since  there is no application load on the database, and no data to
                replicate, this load will be very easy to handle.

              • Replication will appear to be kept more ‘up to date.’

                (Of course, since there is no replicable activity going on,  being  ‘more  up  to
                date’ is something of a mirage.)

       Default  is  10000  ms  and  maximum is 120000 ms. By default, you can expect each node to
       ‘report in’ with a SYNC every 10 seconds.

       Note that SYNC events are also generated on subscriber nodes. Since they are not  actually
       generating  any  data  to  replicate to other nodes, these SYNC events are of not terribly
       much value.

       -g group size
              This controls the maximum SYNC group size, sync_group_maxsize; defaults to 6. Thus,
              if  a  particular  node  is behind by 200 SYNCs, it will try to group them together
              into groups of a maximum size of sync_group_maxsize. This can be expected to reduce
              transaction overhead due to having fewer transactions to COMMIT.

              The  default  of 6 is probably suitable for small systems that can devote only very
              limited bits of memory to  slon.  If  you  have  plenty  of  memory,  it  would  be
              reasonable  to  increase  this, as it will increase the amount of work done in each
              transaction, and will allow a subscriber that is behind by a lot to catch  up  more
              quickly.

              Slon  processes  usually  stay pretty small; even with large value for this option,
              slon would be expected to only grow to a few MB in size.

              The big advantage in increasing this parameter  comes  from  cutting  down  on  the
              number  of  transaction  COMMITs;  moving  from  1  to  2 will provide considerable
              benefit, but the benefits will progressively fall off once the  transactions  being
              processed  get  to  be  reasonably  large.  There  isn't  likely  to  be a material
              difference in performance between 80 and 90; at  that  point,  whether  ‘bigger  is
              better’  will depend on whether the bigger set of SYNCs makes the LOG cursor behave
              badly due to consuming more memory and requiring more time to sortt.

              In Slony-I version 1.0, slon will always attempt to group SYNCs  together  to  this
              maximum,  which  won't  be  ideal  if replication has been somewhat destabilized by
              there being very large updates (e.g. - a single transaction that  updates  hundreds
              of thousands of rows) or by SYNCs being disrupted on an origin node with the result
              that there are a few SYNCs that are very large. You might run into the problem that
              grouping  together  some very large SYNCs knocks over a slon process. When it picks
              up again, it will try to process the same large grouped set of SYNCs, and run  into
              the  same  problem over and over until an administrator interrupts this and changes
              the -g value to break this ‘deadlock.’

              In Slony-I version 1.1 and later versions, the slon instead adaptively  ‘ramps  up’
              from  doing  1 SYNC at a time towards the maximum group size. As a result, if there
              are a couple of SYNCs that  cause  problems,  the  slon  will  (with  any  relevant
              watchdog  assistance)  always  be  able  to get to the point where it processes the
              troublesome SYNCs one by one, hopefully making operator assistance unnecessary.

       -o desired sync time
              A ‘maximum’ time planned for grouped SYNCs.

              If replication is running behind, slon will gradually increase the numbers of SYNCs
              grouped  together,  targeting  that  (based on the time taken for the last group of
              SYNCs) they shouldn't take more than the specified desired_sync_time value.

              The default value for desired_sync_time is 60000ms, equal to one minute.

              That way, you can expect (or at least hope!) that you'll get a COMMIT roughly  once
              per minute.

              It  isn't  totally predictable, as it is entirely possible for someone to request a
              very large update, all as one transaction, that can ‘blow up’  the  length  of  the
              resulting  SYNC  to  be nearly arbitrarily long. In such a case, the heuristic will
              back off for the next group.

              The overall effect is to improve Slony-I's  ability  to  cope  with  variations  in
              traffic.  By starting with 1 SYNC, and gradually moving to more, even if there turn
              out to be variations large enough to cause PostgreSQL backends  to  crash,  Slony-I
              will  back  off down to start with one sync at a time, if need be, so that if it is
              at all possible for replication to progress, it will.

       -c cleanup cycles
              The value vac_frequency indicates how often to VACUUM in cleanup cycles.

              Set this to zero to disable slon-initiated vacuuming. If you  are  using  something
              like  pg_autovacuum  to  initiate  vacuums,  you  may not need for slon to initiate
              vacuums itself. If you are not, there are some tables Slony-I uses that  collect  a
              lot of dead tuples that should be vacuumed frequently, notably pg_listener.

              In  Slony-I  version  1.1,  this  changes a little; the cleanup thread tracks, from
              iteration to iteration, the earliest transaction ID still active in the system.  If
              this  doesn't  change,  from  one iteration to the next, then an old transaction is
              still active, and therefore a VACUUM will do no good. The  cleanup  thread  instead
              merely does an ANALYZE on these tables to update the statistics in pg_statistics.

       -p PID filename
              pid_file contains the filename in which the PID (process ID) of the slon is stored.

              This  may  make  it  easier to construct scripts to monitor multiple slon processes
              running on a single host.

       -f config file
              File from which to read slon configuration.

              This configuration is discussed further in Slon Run-time  Configuration  [“Run-time
              Configuration”  [not available as a man page]]. If there are to be a complex set of
              configuration parameters, or if there are parameters you do not wish to be  visible
              in  the  process environment variables (such as passwords), it may be convenient to
              draw many or all parameters from a configuration file. You might either put  common
              parameters  for  all slon processes in a commonly-used configuration file, allowing
              the command line to specify little other than the connection  info.  Alternatively,
              you might create a configuration file for each node.

       -a archive directory
              archive_dir  indicates  a  directory  in  which to place a sequence of SYNC archive
              files for use in log shipping [“Log Shipping - Slony-I with Files”  [not  available
              as a man page]] mode.

       -x command to run on log archive
              command_on_logarchive  indicates  a  command  to  be  run  each time a SYNC file is
              successfully generated.

              See more details on “slon_conf_command_on_log_archive”  [not  available  as  a  man
              page].

       -q quit based on SYNC provider
              quit_sync_provider  indicates  which  provider's worker thread should be watched in
              order to terminate after a certain event. This must be used in conjunction with the
              -r option below...

              This allows you to have a slon stop replicating after a certain point.

       -r quit at event number
              quit_sync_finalsync indicates the event number after which the remote worker thread
              for the provider above should terminate. This must be used in conjunction with  the
              -q option above...

       -l lag interval
              lag_interval  indicates  an  interval  value such as 3 minutes or 4 hours or 2 days
              that indicates that this node is to lag its providers by the specified interval  of
              time.  This  causes  events to be ignored until they reach the age corresponding to
              the interval.
              Warning

              There is a concommittant downside to this lag; events that  require  all  nodes  to
              synchronize,  as  typically happens with SLONIK FAILOVER(7) and SLONIK MOVE SET(7),
              will have to wait for this lagging node.

              That might not be ideal behaviour at failover time, or at the time when you want to
              run SLONIK EXECUTE SCRIPT(7).

EXIT STATUS

       slon  returns  0 to the shell if it finished normally. It returns via exit(-1) (which will
       likely provide a return value of either 127 or  255,  depending  on  your  system)  if  it
       encounters any fatal error.