This is the command slon that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
PROGRAM:
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.
Use slon online using onworks.net services