bucardo - utility script for controlling the Bucardo program
This document describes version 4.99.10 of bucardo
bucardo [<options>] <command> [<action>] [<command-options>] [<command-params>]
The bucardo script is the main interaction to a running Bucardo instance. It can be used to start and stop Bucardo, add new items, kick syncs, and even install and upgrade Bucardo itself. For more complete documentation, please view the wiki.
Run bucardo help <command> for additional details
installInstalls the Bucardo configuration database.
upgradeUpgrades the Bucardo configuration database to the latest schema.
start [<start options>] [<reason>]Starts Bucardo.
stop [<reason>]Stops Bucardo.
restart [<start options>] [<reason>]Stops and starts Bucardo.
list <type> [<regex>]Lists objects managed by Bucardo.
add <type> <name> <parameters>Adds a new object.
update <type> <name> <parameters>Updates an object.
remove <type> <name> [<name>...]Removes one or more objects.
kick <syncname> [<sync options>] [<syncname>...] [<timeout>]Kicks off one or more syncs.
reload configSends a message to all CTL and KID processes asking them to reload the Bucardo configuration.
show all|<setting> [<setting>...]Shows the current Bucardo settings.
<set <setting=value [<setting=value>...] >>Sets one or more configuration setting..
ping [<timeout>]Sends a ping notice to the MCP process to see if it will respond.
status [<status options>] <syncname> [<syncname>...]Shows the brief status of syncs in a tabular format.
activate <syncname> [<syncname>...] [<timeout>]Activates one or more named syncs.
deactivate <syncname> [<syncname>...] [<timeout>]Deactivates one or more named syncs.
message <body>Sends a message to the running Bucardo logs.
reload [<syncname> [<syncname>...]]Sends a message to one or more sync processes, instructing them to reload.
inspect <type> <name> [<name>...]Inspects one or more objects of a particular type.
validate all|<syncname> [<syncname>...]Validates one or more syncs.
purge all|<table> [<table>...]Purges the delta and track tables for one or more tables, for one or more databases.
help [<command> [<action>]]Shows help.
-d --db-name NAME Database name.
-U --db-user USER Database user name.
-P --db-pass PASS Database password.
-h --db-host HOST Database server host name.
-p --db-port PORT Database server port number.
--bucardorc FILE Use specified .bucarorc file.
--no-bucardorc Do not use .bucardorc file.
--quiet Incremental quiet.
--verbose Incremental verbose mode.
-? --help Output basic help and exit.
--version Print the version number and exit.
Most of the commands take parameters. These may be passed after the command
name and, where appropriate, an object name. Parameters take the form of
key/value pairs separated by an equal sign (=). For example:
bucardo add db sea_widgets dbname=widgets host=db.example.com
Here dbname and <host> are parameters.
Many of the commands also use command-line options, which are specified in the
normal way. For example, the bucardo add db command could also be written
as:
bucardo add db sea_widgets --dbname widgets --dbhost db.example.com
However, parameters and options are not directly interchangeable in all cases. See the documentation for individual commands for their supported options.
bucardo install
Installs the Bucardo schema from the file bucardo.schema into an existing Postgres cluster. The user "bucardo" and database "bucardo" will be created first as needed. This is an interactive installer, but you can supply the following values from the command line:
--dbuserdefaults to postgres
--dbnamedefaults to postgres
--dbportdefaults to 5432
--pid-dirdefaults to /var/run/bucardo/
bucardo upgrade
Upgrades an existing Bucardo installation to the current version of the bucardo database script. Requires that bucardo and the bucardo.schema file be the same version. All changes should be backwards compatible, but you may need to re-validate existing scripts to make sure changes get propagated to all databases.
bucardo start "Reason"
Starts Bucardo. Fails if the MCP process is running (determined if its PID file is present).
Otherwise, starts cleanly by first issuing the equivalent of a stop to ask any existing Bucardo
processes to exit, and then starting a new Bucardo MCP process. A short reason and name should
be provided - these are written to the reason_file file (./bucardo.restart.reason.txt by
default) and sent in the email sent when Bucardo has been started up. It is also appended to
the reason log, which has the same name as the the reason_file but ends in .log.
The options for the start command are:
--sendmailTells Bucardo whether or not to send mail on interesting events: startup, shutdown, and errors. Default is on.
--extra-name stringA short string that will be appended to the version string as output by the Bucardo process names. Mostly useful for debugging.
--log-destination destinationDetermines the destination for logging output. The supported values are:
stderrstdoutsyslognoneMay be specified more than once, which is useful for, e.g., logging both to a
directory and to syslog. If --log-destination is not specified at all, the
default is to log to files in /var/log/bucardo.
--log-separateForces creation of separate log files for each Bucardo process of the form "log.bucardo.X.Y", where X is the type of process (MCP, CTL, or KID), and Y is the process ID.
--log-extension stringAppends the given string to the end of the default log file name, log.bucardo. A dot is added before the name as well, so a log extension of "rootdb" would produce a log file named log.bucardo.rootdb.
--log-cleanForces removal of all old log files before running.
--debug--no-debugEnable or disable debugging output. Disabled by default.
--exit-on-nosync--no-exit-on-nosyncOn startup, if Bucardo finds no active syncs, it normally will continue to run, requiring a restart once syncs are added. This is useful for startup scripts and whatnot.
If, however, you want it to exit when there are no active syncs, pass the
--exit-on-nosync option. You can also be explicit that it should not
exit when there are no syncs by passing --no-exit-on-nosync. This is the
default value.
bucardo stop "Reason"
Forces Bucardo to quit by creating a stop file which all MCP, CTL, and KID processes should
detect and cause them to exit. Note that active syncs will not exit right away, as they
will not look for the stop file until they have finished their current run. Typically,
you should scan the list of processes after running this program to make sure that all Bucardo
processes have stopped. One should also provide a reason for issuing the stop - usually
this is a short explanation and your name. This is written to the reason_file file
(./bucardo.restart.reason.txt by default) and is also used by Bucardo when it exits and
sends out mail about its death. It is also appended to the reason log, which has the same name
as the the reason_file but ends in .log.
bucardo restart "Reason"
Stops bucardo, waits for the stop to complete, and then starts it again.
Supports the same options as <start/start>. Useful for start scripts. For
getting just CTL and KID processes to recognize newly added, updated, or
removed objects, use the reload command, instead.
bucardo list <type> <regex>
Lists summary information about Bucardo objects. The supported types are:
The all option will list information about all object types.
The optional regex option can be used to filter the list to only those
matching a regular expression.
Aliases:
llsitliastlisylit
bucardo add <type> <name> <parameters>
Adds a new object to Bucardo. The type specifies the type of object to add,
while the name should be the name of the object. The supported types
include:
dbdbgrouptablesequenceall tablesall sequencesrelgroupsynccustomnamecustomcols
bucardo add db <name> dbname=actual_name port=xxx host=xxx user=xxx pass=xxx
Adds a new database. The name is the name by which the database will be
known to Bucardo, and must be unique. This may vary from the actual database
name, as multiple hosts might have databases with the same name.
The supported named parameters are:
dbnamedbThe actual name of the database. Required.
typedbtypeThe type of the database. Defaults to postgres. Currently supported values are:
usernamedbuseruserThe username Bucardo should use to connect to the database. Optional.
passworddbpasspassThe password Bucardo should use when connecting to the database. Optional.
dbhostpghosthostThe host name to which to connect. Defaults to the value of the $PGHOSTADDR
or $PGHOST environment variables, if present. Optional.
dbportpgportportThe port to which to connect. Defaults to the value of the $PGPORT
environment variable, if present. Optional.
dbconnpgconnconnAdditional connection parameters, e.g., sslmode=require. Optional.
statusInitial status of the database in Bucardo. Must be either "active" or "inactive". Defaults to "active".
dbgroupgroupBucardo database group to which to add the database. Optional.
addalltablesAutomatically adds all tables once the database has been added. Optional.
addallsequencesAutomatically adds all sequences once the database has been added. Optional.
server_side_preparessspEnable or disable server-side prepares. Pass 1 to enable them or 0 to disable them. Defaults to 1.
dbserviceserviceThe service name to use for a Postgres database. Optional.
Note: As a convenience, if the dbuser value is its default value,
"bucardo", in the event that Bucardo cannot connect to the database, it will
try connecting as "postgres" and create a superuser named "bucardo". This is
to make things easier for folks getting started with Bucardo, but will not
work if it cannot connect as "postgres", or if it the connection failed due to
an authentication failure.
bucardo add dbgroup name db1:source db2:source db3:target ...
Adds one or more databases to the named database group. If the database group doesn't exist, it will be created. The database parameters should specify their roles, either "source" or "target".
bucardo add table [schema].table db=actual_db_name
Adds a table object. The table information will be read from the specified database. Supported parameters:
dbThe name of the database from which to read the table information. Should be a
name known to Bucardo, thanks to a previous call to add database. Required.
autokickBoolean indicating whether or not the table should automatically send kick
messages when it's modified. Overrides the autokick parameter of any syncs
of which the table is a part.
rebuild_indexBoolean indicating whether or not to rebuild indexes after every sync. Off by default. Optional.
analyze_after_copyBoolean indicating whether or not to analyze the table after every sync. Off by default. Optional.
vaccuum_after_copyBoolean indicating whether or not to vacuum the table after every sync. Off by default. Optional.
relgroupAdds the table to the named relation group. If the relation group does not exist, it will be created. Optional.
makedeltaTurns makedelta magic on or off. Value is a list of databases which need makedelta for this table. Value can also be "on" to enable makedelta for all databases. Defaults to "off".
strict_checkBoolean indicating whether or not to be strict when comparing the table
between syncs. If the columns have different names or data types, the
validation will fail. But perhaps the columns are allowed to have different
names or data types. If so, disable strict_check and column diffrences will
result in warnings rather than failing the validation. Defaults to true.
bucardo add sequence [schema].sequence relgroup=xxx
dbThe name of the database from which to read the sequence information. Should
be a name known to Bucardo, thanks to a previous call to add database.
Required.
relgroupAdds the sequence to the named relation group. If the relation group does not exist, it will be created. Optional.
bucardo add all tables [relgroup=xxx] [pkonly]
Adds all the tables in all known databases or in a specified database.
Excludes tables in the pg_catalog, information_schema, and bucardo
schemas. (Yes, this means that you cannot replicate the Bucardo configuration
database using Bucardo. Sorry about that.) Supported options and parameters:
db--dbName of the database from which to find all the tables to add. If not provided, tables will be added from all known databases.
schema--schema-nLimit to the tables in the specified comma-delimited list of schemas. The options may be specified more than once.
exclude-schema--exclude-schema-NExclude tables in the specified comma-delimited list of schemas. The options may be specified more than once.
table--table-tLimit to the specified tables. The options may be specified more than once.
exclude-table--exclude-table-TExclude the specified tables. The options may be specified more than once.
relgroup--relgroupName of the relation group to which to add new tables.
pkonlyExclude tables without primary keys.
bucardo add all sequences relgroup=xxx
Adds all the sequences in all known databases or in a specified database.
Excludes sequences in the pg_catalog, information_schema, and bucardo
schemas. (Yes, this means that you cannot replicate the Bucardo configuration
database using Bucardo. Sorry about that.) Supported options and parameters:
db--dbName of the database from which to find all the sequences to add. If not provided, sequences will be added from all known databases.
schema--schema-nLimit to the sequences in the specified comma-delimited list of schemas. The options may be specified more than once.
exclude-schema--exclude-schema-NExclude sequences in the specified comma-delimited list of schemas. The options may be specified more than once.
relgroup--relgroupName of the relation group to which to add new tables or sequences.
bucardo add relgroup name bucardo add relgroup name table, sequence, ...
Adds a relation group. After the name, pass in an optional list of tables and/or sequences and they will be added to the group.
bucardo add sync syncname relgroup=xxx dbs=xxx
Adds a sync, which is a named replication event containing information about what to replicate from where to where. The supported parameters are:
dbsThe name of a database group or comma-delimited list of databases. All of the specified databases will be synchronized. Required.
relgroupThe name of a relation group to synchronize. All of the tables and/or
sequences in the relgroup will be synchronized. Required unless tables is
specified.
tablesList of tables to add to the sync. This implicitly creates a relation group
with the same name as the sync. Required unless relgroup is specified.
statusIndicates whether or not the sync is active. Must be either "active" or "inactive". Defaults to "active".
rebuild_indexBoolean indicating whether or not to rebuild indexes after every sync. Defaults to off.
lifetimeNumber of seconds a KID can live before being reaped. No limit by default.
maxkicksNumber of times a KID may be kicked before being reaped. No limit by default.
conflict_strategyThe conflict resolution strategy to use in the sync. Supported values:
bucardo_sourceThe rows on the "source" database always "win". In other words, in a conflict, Bucardo copies rows from source to target.
bucardo_targetThe rows on the "target" database always win.
bucardo_skipAny conflicting rows are simply not replicated. Not recommended for most cases.
bucardo_randomEach database has an equal chance of winning each time. This is the default.
bucardo_latestThe row that was most recently changed wins.
bucardo_abortThe sync is aborted on a conflict.
onetimecopyDetermines whether or not a sync should switch to a full copy mode for a single run. Supported values are:
stayaliveBoolean indicating whether or not the sync processes (CTL) should be persistent. Defaults to false.
kidsaliveBoolean indicating whether or not the sync child processes (KID) should be persistent. Defaults to false.
autokickBoolean indicating whether or not tables in the sync should automatically send
kick messages when they're modified. May be overridden by the autokick
parameter of individual tables.
checktimeAn interval specifying the maximum time a sync should go before being kicked. Useful for busy systems where you don't want the overhead of notify triggers.
priorityAn integer indicating the priority of the sync. Lower numbers are higher priority. Currently used only for display purposes.
analyze_after_copyBoolean indicating whether or not to analyze tables after every sync. Off by default. Optional.
overdueAn interval specifying the amount of time after which the sync has not run
that it should be considered overdue. check_bucardo_sync issues a warning
when a sync has not been run in this amount of time.
expiredAn interval specifying the amount of time after which the sync has not run
that it should be considered expired. check_bucardo_sync issues a critical
message when a sync has not been run in this amount of time.
track_ratesBoolean indicating whether or not to track synchronization rates.
rebuild_indexBoolean indicating whether or not to rebuild indexes after every sync. Off by default. Optional.
strict_checkBoolean indicating whether or not to be strict when comparing tables in the
sync. If the columns have different names or data types, the validation will
fail. But perhaps the columns are allowed to have different names or data
types. If so, disable strict_check and column diffrences will result in
warnings rather than failing the validation. Defaults to true.
bucardo add customname oldname newname [db=name] [sync=name]
Creates a new Bucardo custom name mapping. This allows the tables involved in
replication to have different names on different databases. The oldname
must contain the schema as well as the table name (if the source database
supports schemas). The optional parameters limit it to one or more databases,
and/or to one or more syncs. Supported parameters:
syncA sync to which to add the customname. May be specified multiple times.
databasedbA database for which to add the customname. May be specified multiple times.
bucardo add customcols tablename select_clause [sync=x db=x]
Specify the list of columns to select from when syncing. Rather than the
default SELECT * behavior, you can specify any columns you want, including
the use of function call return values and things not in the source column
list. The optional parameters limit it to one or more databases, and/or to one
or more syncs. Some examples:
bucardo add customcols public.foobar "select a, b, c" bucardo add customcols public.foobar "select a, upper(b) AS b, c" db=foo bucardo add customcols public.foobar "select a, b, c" db=foo sync=abc
Supported parameters:
syncA sync to which to add the customcols. May be specified multiple times.
databasedbA database for which to add the customcols. May be specified multiple times.
bucardo add customcode <name> <whenrun=value> <src_code=filename> [optional information]
Adds a customcode, which is a Perl subroutine that can be run at certain points in the sync process. It might handle exceptions, handle conflicts, or just run at certain times with no expectation of functionality (e.g., before Bucardo drops triggers). Metadata about that point will be passed to the subroutine as a hash reference.
Supported parameters:
nameThe name of the custom code object.
aboutA short description of the custom code.
whenrunwhen_runA string indicating when the custom code should be run. Supported values include:
before_txnbefore_check_rowsbefore_trigger_dropafter_trigger_dropafter_table_syncexceptionconflictbefore_trigger_enableafter_trigger_enableafter_txnbefore_syncafter_syncgetdbhBoolean indicating whether or not Perl DBI database handles should be
provided to the custom code subroutine. If true, database handles will be
provided under the dbh key of the hash reference passed to the subroutine.
The value under this key will be a hash reference mapping database names to
their respective handles.
syncName of the sync with which to associate the custom code.
relationName of the table or sequence with which to associate the custom code.
statusThe current status of this customcode. Anything other than "active" means the code is not run.
priorityNumber indicating the priority in which order to execute custom codes. Lower numbers
are higher priority. Useful for subroutines that set lastcode in order to
cancel the execution of subsequent custom codes for the same when_run.
src_codeFile from which to read the custom code Perl source.
The body of the Perl subroutine should be implemented in the src_code file,
and not inside a sub declaration. When called, it will be passed a single
hash reference with the following keys:
syncnameThe name of the currently-executing sync.
versionThe version of Bucardo executing the sync.
sourcenameThe name of the source database.
targetnameThe name of the target database.
sendmailA code reference that can be used to send email messages.
sourcedbhA DBI database handle to the sync source database. Provided only to custom code executed by the controller.
rellistAn array reference of hash references, each representing a relation in the sync. Provided only to custom code executed by the controller. The keys in the hash are the same as the parameters supported by add table and add sequence, as appropriate.
schemanameThe schema for the table that triggered the exception. Provided only to "exception" custom codes.
tablenameThe name of the table that triggered the exception. Provided only to "exception" custom codes.
error_stringThe string containing the actual error message. Provided only to "exception" custom codes.
deltabinA hash reference with the name of each source database as a key and a list of all primary keys joined together with "\0". Provided only to "exception" custom codes.
attemptsThe number of times the sync has been attempted. Provided only to "exception" custom codes.
conflictsA hash reference of conflicting rows. The keys are the primary key values, and the values are hash references with the names of the databases containing the conflicting rows and true values. Provided only to "conflict" custom codes.
The custom code subroutine may set any of these keys in the hash reference to change the behavior of the sync:
messageMessage to send to the logs.
warningA warning to emit after the subroutine has returned.
errorAn error to be thrown after the subroutine has returned.
nextcodeSet to send execution to the next custom code of the same type. Mainly useful to exception custom codes, and supported only by custom codes executed by the controller.
lastcodeSet to true to have any subsequent custom codes of the same type to be skipped.
endsyncCancels the sync altogether.
An example:
use strict; use warnings; use Data::Dumper;
my $info = shift;
# Let's open a file.
my $file = '/tmp/bucardo_dump.txt';
open my $fh, '>:encoding(UTF-8)', $file or do {
$info->{warning} = "Cannot open $file: $!\n";
return;
};
# Inspect $info for fun.
print $fh Dumper $info;
close $fh or $info->{warning} = "Error closing $file: $!\n";
# Log a message and return.
$info->{message} = 'IN UR DATABASEZ NORMALIZIN UR RELAYSHUNS';
return;
bucardo update <type> <name> <parameters>
Updates a Bucardo object. The type specifies the type of object to update,
while the name should be the name of the object. The supported parameters
for each type are the same as those for add. The supported types are:
customcodedbsynctablesequence
bucardo update customcode <name> setting=value
Updates an existing customcode. Items that can be changed are:
aboutA short description of the custom code.
getdbhBoolean indicating whether or not Perl DBI database handles should be
provided to the custom code subroutine. If true, database handles will be
provided under the dbh key of the hash reference passed to the subroutine.
The value under this key will be a hash reference mapping database names to
their respective handles.
nameThe name of the custom code object.
priorityNumber indicating the priority in which order to execute custom codes. Lower numbers
are higher priority. Useful for subroutines that set lastcode in order to
cancel the execution of subsequent custom codes for the same when_run.
statusThe current status of this customcode. Anything other than "active" means the code is not run.
whenrunA string indicating when the custom code should be run. Supported values include:
before_txnbefore_check_rowsbefore_trigger_dropafter_trigger_dropafter_table_syncexceptionconflictbefore_trigger_enableafter_trigger_enableafter_txnbefore_syncafter_sync
bucardo udpate db <name> port=xxx host=xxx user=xxx pass=xxx
Updates a database. The name is the name by which the database is known to
Bucardo. This may vary from the actual database name, as multiple hosts might
have databases with the same name.
The supported named parameters are:
dbnamedbThe actual name of the database.
typedbtypeThe type of the database. Currently supported values are:
postgres
drizzle
mongo
mysql
maria
oracle
redis
sqlite
usernamedbuseruserThe username Bucardo should use to connect to the database.
passworddbpasspassThe password Bucardo should use when connecting to the database.
dbhostpghosthostThe host name to which to connect.
dbportpgportportThe port to which to connect.
dbconnpgconnconnAdditional connection parameters, e.g., sslmode=require. Optional.
statusStatus of the database in Bucardo. Must be either "active" or "inactive".
dbgroupserver_side_preparessspEnable or disable server-side prepares. Pass 1 to enable them or 0 to disable them.
dbserviceserviceThe service name to use for a Postgres database.
groupA comma-separated list of database groups to which to add the database. The database will be removed from any other groups of which it was previously a member.
bucardo update sync syncname relgroup=xxx dbs=xxx
Updates a sync, which is a named replication event containing information about what to replicate from where to where. The supported parameters are:
nameThe name of the sync. Required.
dbsThe name of a database group or comma-delimited list of databases.
relgroupThe name of a relation group to synchronize.
statusIndicates whether or not the sync is active. Must be either "active" or
"inactive". Note that this will not change the current run status of the sync,
just mark whether it should be active or inactive on the next reload. Use the
activate sync and <deactivate sync> commands to actually activate or
deactivate a sync.
rebuild_indexBoolean indicating whether or not to rebuild indexes after every sync.
lifetimeNumber of seconds a KID can live before being reaped.
maxkicksNumber of times a KID may be kicked before being reaped.
isolation_levelThe transation isolation level this sync should use. Only choices are "serializable" and "repeatable read"
conflict_strategyThe conflict resolution strategy to use in the sync. Supported values:
bucardo_sourceThe rows on the "source" database always "win". In other words, in a conflict, Bucardo copies rows from source to target.
bucardo_targetThe rows on the "target" database always win.
bucardo_skipAny conflicting rows are simply not replicated. Not recommended for most cases.
bucardo_randomEach database has an equal chance of winning each time.
bucardo_latestThe row that was most recently changed wins.
bucardo_abortThe sync is aborted on a conflict.
onetimecopyDetermines whether or not a sync should switch to a full copy mode for a single run. Supported values are:
stayaliveBoolean indicating whether or not the sync processes (CTL) should be persistent.
kidsaliveBoolean indicating whether or not the sync child processes (KID) should be persistent.
autokickBoolean indicating whether or not tables in the sync should automatically send
kick messages when they're modified. May be overridden by the autokick
parameter of individual tables.
checktimeAn interval specifying the maximum time a sync should go before being kicked. Useful for busy systems where you don't want the overhead of notify triggers.
priorityAn integer indicating the priority of the sync. Lower numbers are higher priority. Currently used only for display purposes.
analyze_after_copyBoolean indicating whether or not to analyze tables after every sync. Off by default.
overdueAn interval specifying the amount of time after which the sync has not run
that it should be considered overdue. check_bucardo_sync issues a warning
when a sync has not been run in this amount of time.
expiredAn interval specifying the amount of time after which the sync has not run
that it should be considered expired. check_bucardo_sync issues a critical
message when a sync has not been run in this amount of time.
track_ratesBoolean indicating whether or not to track synchronization rates.
rebuild_indexBoolean indicating whether or not to rebuild indexes after every sync.
strict_checkBoolean indicating whether or not to be strict when comparing tables in the
sync. If the columns have different names or data types, the validation will
fail. But perhaps the columns are allowed to have different names or data
types. If so, disable strict_check and column diffrences will result in
warnings rather than failing the validation. Defaults to true.
bucardo update table [schema].table db=actual_db_name
Updates a table object. The table information will be read from the specified database. Supported parameters:
dbThe name of the database from which to read the table information. Should be a name known to Bucardo.
schemanameThe name of the schema in which the table is found.
tablenameThe actual name of the table.
autokickBoolean indicating whether or not the table should automatically send kick
messages when it's modified. Overrides the autokick parameter of any syncs
of which the table is a part.
rebuild_indexBoolean indicating whether or not to rebuild indexes after every sync.
analyze_after_copyBoolean indicating whether or not to analyze the table after every sync.
vaccuum_after_copyBoolean indicating whether or not to vacuum the table after every sync.
relgroupAdds the table to the named relation group. May be specified more than once. The table will be removed from any other relation groups.
makedeltaSpecifies which databases need makedelta enabled for this table.
strict_checkBoolean indicating whether or not to be strict when comparing the table
between syncs. If the columns have different names or data types, the
validation will fail. But perhaps the columns are allowed to have different
names or data types. If so, disable strict_check and column diffrences will
result in warnings rather than failing the validation. Defaults to true.
bucardo update sequence [schema].sequence relgroup=xxx
dbThe name of the database where the sequence lives.
schemanameThe name of the schema in which the sequence is found.
relgroupAdds the sequence to the named relation group. May be specified more than once. The sequence will be removed from any other relation groups.
bucardo remove <item_type> <item_name>
Removes one or more objects from Bucardo. Valid item types are;
db or database
Use the --force option to clear out related tables and groups instead of
erroring out.
dbgroup
relgroup
sync
table
sequence
customcols
customname
customcode
Aliases:
deletedel
bucardo kick <syncname(s)> [timeout]
Tells one or more named syncs to fire as soon as possible. Note that this simply sends a request that the sync fire: it may not start right away if the same sync is already running, or if the source or target database has exceeded the number of allowed Bucardo connections. If the final argument is a number, it is treated as a timeout. If this number is zero, the bucardo command will not return until the sync has finished. For any other number, the sync will wait at most that number of seconds. If any sync has not finished before the timeout, an exit value of 1 will be returned. Errors will cause exit values of 2 or 3. In all other cases, an exit value of 0 will be returned.
If a timeout is given, the total completion time in seconds is also displayed. If the sync is going to multiple targets, the time that each target takes from the start of the kick is also shown as each target finishes. Options:
--retryThe number of times to retry a sync if it fails. Defaults to 0.
--retry-sleepHow long to sleep, in seconds, between each retry attempt.
--notimerBy default, kicks with a timeout argument give a running real-time summary of time elapsed by using the backspace character. This may not be wanted if running a kick, for example, via a cronjob, so turning --notimer on will simply print the entire message without backspaces.
bucardo reload config bucardo reload config 30
Sends a message to all CTL and KID processes asking them to reload the Bucardo
configuration. This configuration is a series of key/value pairs that
configure Bucardo's behavior, and not any of the objects managed by the
add, remove, or update commands.
By default, Bucardo will send the message and then exit. Pass an optional number and Bucardo will instead wait up to that length of time for all child processes to report completion.
bucardo set setting1=value [setting2=value]
Sets one or more configuration setting table. Setting names are case-insensitive. The available settings are:
autosync_ddlWhich DDL changing conditions do we try to remedy automatically? Default: newcol.
bucardo_current_versionCurrent version of Bucardo. Default: 4.99.10.
bucardo_vacDo we want the automatic VAC daemon to run? Default: 1.
bucardo_versionBucardo version this schema was created with. Default: 4.99.10.
ctl_checkonkids_timeHow often does the controller check on the kids health? Default: 10.
ctl_createkid_timeHow long do we sleep to allow kids-on-demand to get on their feet? Default: 0.5.
ctl_sleepHow long does the controller loop sleep? Default: 0.2.
default_conflict_strategyDefault conflict strategy for all syncs. Default: bucardo_latest.
default_email_fromWho the alert emails are sent as. Default: nobody@example.com.
default_email_hostWhich host to send email through. Default: localhost.
default_email_toWho to send alert emails to. Default: nobody@example.com.
email_debug_fileFile to save a copy of all outgoing emails to. Default: None.
endsync_sleepHow long do we sleep when custom code requests an endsync? Default: 1.0.
flatfile_dirDirectory to store the flatfile output inside of. Default: ..
host_safety_checkRegex to make sure we don't accidentally run where we should not. Default: None.
isolation_levelThe transaction isolation level all sync should use. Defaults to 'serializable'. The only other valid option is 'repeatable read'
kid_deadlock_sleepHow long to sleep in seconds if we hit a deadlock error. Default: 0.5.
Set to -1 to prevent the kid from retrying.
kid_nodeltarows_sleepHow long do kids sleep if no delta rows are found? Default: 0.5.
kid_pingtimeHow often do we ping check the KID? Default: 60.
kid_restart_sleepHow long to sleep in seconds when restarting a kid? Default: 1.
kid_serial_sleepHow long to sleep in seconds if we hit a serialization error. Default: 0.5.
Set to -1 to prevent the kid from retrying.
kid_sleepHow long does a kid loop sleep? Default: 0.5.
log_conflict_fileName of the conflict detail log file. Default: bucardo_conflict.log.
log_levelHow verbose to make the logging. Higher is more verbose. Default: normal.
log_microsecondShow microsecond output in the timestamps? Default: 0.
log_showlevelShow log level in the log output? Default: 0.
log_showlineShow line number in the log output? Default: 0.
log_showpidShow PID in the log output? Default: 1.
log_showtimeShow timestamp in the log output? 0=off 1=seconds since epoch 2=scalar gmtime 3=scalar localtime. Default: 3.
mcp_dbproblem_sleepHow many seconds to sleep before trying to respawn. Default: 15.
mcp_loop_sleepHow long does the main MCP daemon sleep between loops? Default: 0.2.
mcp_pingtimeHow often do we ping check the MCP? Default: 60.
mcp_vactimeHow often in seconds do we check that a VAC is still running? Default: 60.
piddirDirectory holding Bucardo PID files. Default: /var/run/bucardo.
reason_fileFile to hold reasons for stopping and starting. Default: bucardo.restart.reason.txt.
reload_config_timeoutNumber of seconds the reload_config command should wait for the reload to complete.
Default: 30.
semaphore_tableTable to let apps know a sync is ongoing. Default: bucardo_status.
statement_chunk_sizeHow many primary keys to shove into a single statement. Default: 10000.
stats_script_urlLocation of the stats script. Default: http://www.bucardo.org/.
stopfileName of the semaphore file used to stop Bucardo processes. Default: fullstopbucardo.
syslog_facilityWhich syslog facility level to use. Default: log_local1.
tcp_keepalives_countHow many probes to send. 0 indicates sticking with system defaults. Default: 0.
tcp_keepalives_idleHow long to wait between each keepalive probe. Default: 0.
tcp_keepalives_intervalHow long to wait for a response to a keepalive probe. Default: 0.
vac_runHow often does the VAC process run? Default: 30.
vac_sleepHow long does VAC process sleep between runs? Default: 120.
warning_fileFile containing all log lines starting with "Warning". Default: bucardo.warning.log.
bucardo show all|<setting> [<setting>...]
Shows the current Bucardo settings. Use the keyword "all" to see all the settings, or specify one or more search terms. See set for complete details on the configuration settings.
bucardo config show all|<setting> [<setting>...] bucardo config set <setting=value> [<setting=value>...]
Deprecated interface for showing and setting configuration settings. Use the show and set commands, instead.
bucardo ping bucardo ping 60 bucardo ping 0
Sends a ping notice to the MCP process to see if it will respond. By default, it will wait 15 seconds. A numeric argument will change this timeout. Using a 0 as the timeout indicates waiting forever. If a response was returned, the program will exit with a value of 0. If it times out, the value will be 1. Returns a Nagios like message starting with "OK" or "CRITICAL" for success or failure.
bucardo status [syncname(s)] [--sort=#] [--show-days] [--compress]
Shows the brief status of all known syncs in a tabular format. If given one or more sync names, shows detailed information for each one. To see detailed information for all syncs, simply use "status all"
When showing brief information, the columns are:
The name of the sync
The state of the sync. Can be 'Good', 'Bad', 'Empty', 'No records found', 'Unknown', or the run state for a currently-running sync.
When the sync last successfully ran.
How long it has been since the last sync success
The number of insert and deletes performed by the last successful sync. May also show the number of rows truncated (T) or conflicted (C), if applicable.
When the sync last failed.
How long it has been since the last sync failure
The options for status are:
--show-daysSpecifies whether or not do list the time interval with days, or simply show the hours. For example, "3d 12h 6m 3s" vs. "48h 6m 3s"
--compressSpecifies whether or not to compress the time interval by removing spaces. Mostly used to limit the width of the 'status' display.
--sort=#Requests sorting of the 'status' output by one of the nine columns. Use a negative number to reverse the sort order.
bucardo activate syncname [syncname2 syncname3 ...] [timeout]
Activates one or more named syncs. If given a timeout argument, it will wait until it has received confirmation from Bucardo that each sync has been successfully activated.
bucardo deactivate syncname [syncname2 syncname3 ...] [timeout]
Deactivates one or more named syncs. If given a timeout argument, it will wait until it has received confirmation from Bucardo that the sync has been successfully deactivated.
bucardo message 'I WAS HERE'
Sends a message to the running Bucardo logs. This message will appear prefixed with "MESSAGE: ". If Bucardo is not running, the message will go to the logs the next time Bucardo runs and someone adds another message.
bucardo reload [syncname2 syncname3 ...]
Sends a message to one or more sync processes, instructing them to reload. Waits for each to reload before going on to the next. Reloading consists of deactivating a sync, reloading its information from the database, and activating it again.
bucardo inspect <type> <name> [<name2>...]
Inspects one or more objects of a particular type. The results are sent to
STDOUT. The supported types include:
tablesyncrelgroup
bucardo validate all|<sync> [<sync>...]
Validates one or more syncs. Use the keyword "all" to validate all syncs, or specify one or more syncs to validate.
Note that this command executes a subset of all the validation done when a sync is started or activated.
bucardo purge all|<table> [<table>...]
Purges the delta and track tables for one or more tables, for one or more databases. Use the keyword "all" to validate all tables, or specify one or more tables to validate.
bucardo help bucardo help <command> bucardo help <command> <action>
Get help. General help can be returned, as well as help for a single command or a command and its action. Some examples:
bucard help list bucard help add table
It is usually easier to set most of these options at the top of the script, or make an alias for them, as they will not change very often if at all.
-d--db-namebucardo --db-name widgets bucardo -d bricolage
Name of the Bucardo database to which to connect.
-U--db-userbucardo --db-user postgres bucardo -U Mom
User name to use when connecting to the Bucardo database.
-P--db-passbucardo --db-pass s3cr1t bucardo -P lolz
Password to use when connecting to the Bucardo database.
-h--db-hostbucardo --db-host db.example.com bucardo -h db2.example.net
Host name to use when connecting to the Bucardo database.
-p--db-portbucardo --db-port 7654
Port number to connect to when connecting to the Bucardo database.
--bucardorcbucardo --bucardorc myrcfile
Use the specified file for configuration instead of the default ./.bucardorc.
--no-bucardorcDo not use the ./.bucardorc configuration file.
--verboseMakes bucardo run verbosely. Default is off.
--quietTells bucardo to be as quiet as possible. Default is off.
--helpShows a brief summary of usage for bucardo.
In addition to command-line configurations, you can put any options inside of a file. The file .bucardorc in
the current directory will be used if found. If not found, then the file ~/.bucardorc will be used. Finally,
the file /etc/bucardorc will be used if available. The format of the file is option = value, one per line. Any
line starting with a '#' will be skipped. Any values loaded from a bucardorc file will be overwritten by
command-line options. All bucardorc files can be ignored by supplying a --no-bucardorc argument. A specific
file can be forced with the --bucardorc=file option; if this option is set, bucardo will refuse to run
unless that file can be read.
The bucardo script uses $ENV{HOME} to look for a .bucardorc file.
Bug reports and feature requests are always welcome, please visit bucardo.org, file GitHub Issues, or post to our email list.
Bucardo
Copyright 2006-2013 Greg Sabino Mullane <greg@endpoint.com>
This program is free to use, subject to the limitations in the LICENSE file.