html#add-db
NAME
VERSION
USAGE
DESCRIPTION
COMMANDS
OPTIONS
COMMAND DETAILS
install
upgrade
start
stop
restart
list
add
add db
add dbgroup
add table
add sequence
add all tables
add all sequences
add relgroup
add sync
add customname
add customcols
add customcode
update
update customcode
update db
update sync
update table
update sequence
remove
kick
pause
reload config
set
show
config
ping
status
activate
deactivate
message
reload
inspect
validate
purge
delta
help
OPTIONS DETAILS
1 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
FILES
ENVIRONMENT VARIABLES
BUGS
SEE ALSO
COPYRIGHT
NAME
bucardo - utility script for controlling the Bucardo program
VERSION
This document describes version 5.5.0 of bucardo
USAGE
bucardo [<options>] <command> [<action>] [<command-options>] [<command-params>]
DESCRIPTION
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.
COMMANDS
Run bucardo help <command> for additional details
install
upgrade
Starts Bucardo.
stop [<reason>]
Stops Bucardo.
2 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
Updates an object.
reload config
Sends a message to all CTL and KID processes asking them to reload the Bucardo configuration.
reopen
Sends a message to all Bucardo processes asking them to reopen any log files they may have open. Call
this after you have rotated the log file(s).
ping [<timeout>]
3 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
message '<body>'
Purges the delta and track tables for one or more tables, for one or more databases.
delta [<database(s)>]
Shows help.
OPTIONS
-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 .bucardorc 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.
--dryrun Do not perform any actual actions.
--confirm Require direct confirmation before changes.
COMMAND DETAILS
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
4 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
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.
install
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:
--dbuser
defaults to postgres
--dbname
defaults to postgres
--dbport
defaults to 5432
--pid-dir
defaults to /var/run/bucardo/
upgrade
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.
start
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.
5 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
--sendmail
Tells Bucardo whether or not to send mail on interesting events: startup, shutdown, and errors. Default
is on.
--extra-name string
A short string that will be appended to the version string as output by the Bucardo process names.
Mostly useful for debugging.
--log-destination destination
Determines the destination for logging output. The supported values are:
stderr
stdout
syslog
none
A file system directory.
May 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-separate
Forces 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 string
Appends 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-clean
--debug
--no-debug
--exit-on-nosync
--no-exit-on-nosync
On 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.
stop
6 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
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.
restart
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.
list
bucardo list <type> <regex>
Lists summary information about Bucardo objects. The supported types are:
database
dbgroup
relgroup
sync
table
sequence
customcode
customname
customcols
all
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.
add
bucardo add <type> <name> <parameters>
7 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
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:
db
dbgroup
table
sequence
all tables
all sequences
relgroup
sync
customname
customcols
add db
bucardo add db <name> dbname=actual_name port=xxx host=xxx user=xxx
Adds one or more new databases. 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. Multiple databases can be added by separating the names with commas. Options that differ
between the databases should be separated by a matching commas. Example:
bucardo add db alpha,beta dbname=sales host=aa,bb user=bucardo
This command will attempt an immediate test connection to the added database(s). The supported named
parameters are:
dbname
The actual name of the database. Required unless using a service file or setting it via dbdsn.
type
The type of the database. Defaults to postgres. Currently supported values are:
postgres
drizzle
mongo
mysql
maria
oracle
redis
sqlite
dbdsn
8 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
A direct DSN to connect to a database. Will override all other connection options if set.
user
pass
The password Bucardo should use when connecting to this database. It is recommended that you use a
.pgpass file rather than entering the password here.
host
The host Bucardo should use when connecting to this database. Defaults to the value of the
$PGHOSTADDR or $PGHOST environment variables, if present.
port
The port Bucardo should use when connecting to this database. Defaults to the value of the $PGPORT
environment variable, if present.
conn
service
The service name Bucardo should use when connecting to this database.
status
Initial status of this database. Defaults to "active" but can be set to "inactive".
dbgroup
addalltables
addallsequences
server_side_prepares
ssp
makedelta
Additional parameters:
9 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
--force
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.
add dbgroup
bucardo add dbgroup name db1:source db2:source db3:target ...
Adds one or more databases to the named dbgroup. If the dbgroup doesn't exist, it will be created. The
database parameters should specify their roles, either "source" or "target".
add table
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:
db
The 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.
autokick
Boolean 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_index
Boolean indicating whether or not to rebuild indexes after every sync. Off by default. Optional.
analyze_after_copy
Boolean indicating whether or not to analyze the table after every sync. Off by default. Optional.
vacuum_after_copy
Boolean indicating whether or not to vacuum the table after every sync. Off by default. Optional.
relgroup
Adds the table to the named relgroup. If the relgroup does not exist, it will be created. Optional.
makedelta
Turns 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_checking
10 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
Boolean 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_checking and column differences will result in
warnings rather than failing the validation. Defaults to true.
add sequence
bucardo add sequence [schema].sequence relgroup=xxx
db
The 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.
relgroup
Adds the sequence to the named relgroup. If the relgroup does not exist, it will be created. Optional.
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
--db
Name 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
-n
Limit to the tables in the specified comma-delimited list of schemas. The options may be specified
more than once.
exclude-schema
--exclude-schema
-N
Exclude tables in the specified comma-delimited list of schemas. The options may be specified more
than once.
table
--table
-t
Limit to the specified tables. The options may be specified more than once.
exclude-table
11 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
--exclude-table
-T
Exclude the specified tables. The options may be specified more than once.
relgroup
--relgroup
pkonly
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
--db
Name 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
-n
Limit to the sequences in the specified comma-delimited list of schemas. The options may be specified
more than once.
exclude-schema
--exclude-schema
-N
Exclude sequences in the specified comma-delimited list of schemas. The options may be specified
more than once.
relgroup
--relgroup
add relgroup
bucardo add relgroup name
bucardo add relgroup name table, sequence, ...
Adds a relgroup. After the name, pass in an optional list of tables and/or sequences and they will be added to
the group.
12 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
add sync
bucardo add sync name 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:
dbs
The name of a dbgroup or comma-delimited list of databases. All of the specified databases will be
synchronized. Required.
dbgroup
The name of a dbgroup. All of the databases within this group will be part of the sync. If the dbgroup
does not exists and a separate list of databases is given, the group will be created and populated.
relgroup
The name of a relgroup to synchronize. All of the tables and/or sequences in the relgroup will be
synchronized. Required unless tables is specified.
tables
List of tables to add to the sync. This implicitly creates a relgroup with the same name as the sync.
Required unless relgroup is specified.
status
Indicates whether or not the sync is active. Must be either "active" or "inactive". Defaults to "active".
rebuild_index
Boolean indicating whether or not to rebuild indexes after every sync. Defaults to off.
lifetime
Number of seconds a KID can live before being reaped. No limit by default.
maxkicks
Number of times a KID may be kicked before being reaped. No limit by default.
conflict_strategy
bucardo_source
The rows on the "source" database always "win". In other words, in a conflict, Bucardo copies
rows from source to target.
bucardo_target
13 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
bucardo_skip
Any conflicting rows are simply not replicated. Not recommended for most cases.
bucardo_random
Each database has an equal chance of winning each time. This is the default.
bucardo_latest
bucardo_abort
onetimecopy
Determines whether or not a sync should switch to a full copy mode for a single run. Supported values
are:
0: off
1: always full copy
2: only copy tables that are empty on the target
stayalive
Boolean indicating whether or not the sync processes (CTL) should be persistent. Defaults to false.
kidsalive
Boolean indicating whether or not the sync child processes (KID) should be persistent. Defaults to
false.
autokick
Boolean 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.
checktime
An 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.
priority
An integer indicating the priority of the sync. Lower numbers are higher priority. Currently used only
for display purposes.
analyze_after_copy
Boolean indicating whether or not to analyze tables after every sync. Off by default. Optional.
overdue
14 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
An 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.
expired
An 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_rates
rebuild_index
Boolean indicating whether or not to rebuild indexes after every sync. Off by default. Optional.
strict_checking
Boolean 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_checking and column differences will result in
warnings rather than failing the validation. Defaults to true.
add customname
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:
sync
database
db
A database for which to add the customname. May be specified multiple times.
add customcols
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
15 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
Supported parameters:
sync
database
db
A database for which to add the customcols. May be specified multiple times.
add customcode
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:
name
about
whenrun
when_run
A string indicating when the custom code should be run. Supported values include:
before_txn
before_check_rows
before_trigger_drop
after_trigger_drop
after_table_sync
exception
conflict
before_trigger_enable
after_trigger_enable
after_txn
before_sync
after_sync
getdbh
Boolean 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.
16 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
sync
relation
Name of the table or sequence with which to associate the custom code.
status
The current status of this customcode. Anything other than "active" means the code is not run.
priority
Number 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_code
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:
syncname
version
sourcename
targetname
sendmail
sourcedbh
A DBI database handle to the sync source database. Provided only to custom code executed by the
controller.
rellist
An 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.
17 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
schemaname
The schema for the table that triggered the exception. Provided only to "exception" custom codes.
tablename
The name of the table that triggered the exception. Provided only to "exception" custom codes.
error_string
The string containing the actual error message. Provided only to "exception" custom codes.
deltabin
A 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.
attempts
The number of times the sync has been attempted. Provided only to "exception" custom codes.
conflicts
A 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:
message
warning
error
nextcode
Set 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.
lastcode
Set to true to have any subsequent custom codes of the same type to be skipped.
endsync
18 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
An example:
use strict;
use warnings;
use Data::Dumper;
my $info = shift;
update
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:
customcode
db
sync
table
sequence
update customcode
bucardo update customcode <name> setting=value
about
getdbh
Boolean 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.
name
19 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
priority
Number 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.
status
The current status of this customcode. Anything other than "active" means the code is not run.
whenrun
A string indicating when the custom code should be run. Supported values include:
before_txn
before_check_rows
before_trigger_drop
after_trigger_drop
after_table_sync
exception
conflict
before_trigger_enable
after_trigger_enable
after_txn
before_sync
after_sync
update db
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.
dbname
db
type
dbtype
postgres
drizzle
mongo
mysql
20 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
maria
oracle
redis
sqlite
username
dbuser
dbdsn
A direct DSN to connect to a database. Will override all other connection options if set.
user
password
dbpass
pass
dbhost
pghost
host
dbport
pgport
port
dbconn
pgconn
conn
status
dbgroup
server_side_prepares
ssp
makedelta
21 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
dbservice
service
dbgroup
A comma-separated list of dbgroups to which to add the database. The database will be removed from
any other dbgroups of which it was previously a member.
update sync
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:
name
dbs
relgroup
status
Indicates 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_index
lifetime
maxkicks
isolation_level
The transaction isolation level this sync should use. Only choices are "serializable" and "repeatable
read"
22 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
conflict_strategy
bucardo_source
The rows on the "source" database always "win". In other words, in a conflict, Bucardo copies
rows from source to target.
bucardo_target
bucardo_latest
bucardo_abort
onetimecopy
Determines whether or not a sync should switch to a full copy mode for a single run. Supported values
are:
0: off
1: always full copy
2: only copy tables that are empty on the target
stayalive
Boolean indicating whether or not the sync processes (CTL) should be persistent.
kidsalive
Boolean indicating whether or not the sync child processes (KID) should be persistent.
autokick
Boolean 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.
checktime
An 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.
priority
An integer indicating the priority of the sync. Lower numbers are higher priority. Currently used only
for display purposes.
analyze_after_copy
23 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
Boolean indicating whether or not to analyze tables after every sync. Off by default.
overdue
An 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.
expired
An 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_rates
rebuild_index
strict_checking
Boolean 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_checking and column differences will result in
warnings rather than failing the validation. Defaults to true.
update table
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:
db
The name of the database from which to read the table information. Should be a name known to
Bucardo.
schemaname
tablename
autokick
Boolean 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_index
24 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
analyze_after_copy
Boolean indicating whether or not to analyze the table after every sync.
vacuum_after_copy
Boolean indicating whether or not to vacuum the table after every sync.
relgroup
Adds the table to the named relgroup. May be specified more than once. The table will be removed
from any other relgroups.
makedelta
strict_checking
Boolean 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_checking and column differences will result in
warnings rather than failing the validation. Defaults to true.
update sequence
bucardo update sequence [schema].sequence relgroup=xxx
db
schemaname
relgroup
Adds the sequence to the named relgroup. May be speci<fied more than once. The sequence will be
removed from any other relgroups.
remove
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
25 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
relgroup
sync
table
sequence
customcols
customname
customcode
kick
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:
--retry
--retry-sleep
--notimer
By 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.
pause
bucardo pause <syncname(s)>
bucardo pause all
bucardo resume <syncname(s)>
bucardo resume all
Tells one or more named syncs to temporarily pause, or to resume from a previous pause. This only applies to
active syncs and only takes effect if Bucardo is currently running. The keyword 'all' can be used as well to
pause or resume all known active syncs.
26 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
reload config
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.
set
bucardo set setting1=value [setting2=value]
Sets one or more configuration setting table. Setting names are case-insensitive. The available settings are:
autosync_ddl
bucardo_version
bucardo_vac
bucardo_initial_version
ctl_checkonkids_time
How often does the controller check on the kids health? Default: 10.
ctl_createkid_time
How long do we sleep to allow kids-on-demand to get on their feet? Default: 0.5.
ctl_sleep
default_conflict_strategy
default_email_from
27 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
default_email_host
default_email_to
email_debug_file
endsync_sleep
How long do we sleep when custom code requests an endsync? Default: 1.0.
flatfile_dir
host_safety_check
Regex to make sure we don't accidentally run where we should not. Default: None.
isolation_level
The transaction isolation level all sync should use. Defaults to 'serializable'. The only other valid option
is 'repeatable read'
kid_deadlock_sleep
How 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_sleep
How long do kids sleep if no delta rows are found? Default: 0.5.
kid_pingtime
kid_restart_sleep
kid_serial_sleep
How long to sleep in seconds if we hit a serialization error. Default: 0.5. Set to -1 to prevent the kid
from retrying.
kid_sleep
28 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
log_conflict_file
log_level
How verbose to make the logging. Higher is more verbose. Default: normal.
log_microsecond
log_showlevel
log_showline
log_showpid
log_showtime
Show timestamp in the log output? 0=off 1=seconds since epoch 2=scalar gmtime 3=scalar localtime.
Default: 3.
mcp_dbproblem_sleep
mcp_loop_sleep
How long does the main MCP daemon sleep between loops? Default: 0.2.
mcp_pingtime
mcp_vactime
How often in seconds do we check that a VAC is still running? Default: 60.
piddir
reason_file
reload_config_timeout
29 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
Number of seconds the reload_config command should wait for the reload to complete. Default: 30.
semaphore_table
statement_chunk_size
How many primary keys to shove into a single statement. Default: 10000.
stats_script_url
stopfile
Name of the semaphore file used to stop Bucardo processes. Default: fullstopbucardo.
syslog_facility
tcp_keepalives_count
How many probes to send. 0 indicates sticking with system defaults. Default: 0.
tcp_keepalives_idle
tcp_keepalives_interval
vac_run
vac_sleep
How long does VAC process sleep between runs? Default: 120.
warning_file
File containing all log lines starting with "Warning". Default: bucardo.warning.log.
show
bucardo show all|changed|<setting> [<setting>...]
Shows the current Bucardo settings. Use the keyword "all" to see all the settings, "changed" to see settings
different than the installed defaults, or specify one or more search terms. See "set" for complete details on the
configuration settings.
30 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
config
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.
ping
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.
status
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"
1. Name
2. State
The state of the sync. Can be 'Good', 'Bad', 'Empty', 'No records found', 'Unknown', or the run state for a
currently-running sync.
3. Last good
4. Time
5. Last I/U
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.
6. Last bad
31 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
7. Time
--show-days
Specifies 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"
--compress
Specifies 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.
activate
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.
deactivate
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.
message
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.
reload
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.
32 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
inspect
bucardo inspect <type> <name> [<name2>...]
Inspects one or more objects of a particular type. The results are sent to STDOUT. The supported types include:
table
sync
relgroup
validate
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.
purge
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.
delta
bucardo delta [total] [<database>...]
Show the current delta count for each source target. Provide a list of databases to limit it to just the given
ones. Wildcards are allowed. Use the special name "totals" to show only the grand total.
help
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
OPTIONS DETAILS
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.
33 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
-d
--db-name
-U
--db-user
-P
--db-pass
-h
--db-host
-p
--db-port
--bucardorc
Use the specified file for configuration instead of the default ./.bucardorc.
--no-bucardorc
--verbose
--quiet
--help
34 de 35 15/11/2018 03:11 p. m.
http://localhost/___bucardo/bucardo.html#add-db
FILES
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.
ENVIRONMENT VARIABLES
The bucardo script uses $ENV{HOME} to look for a .bucardorc file.
BUGS
Bug reports and feature requests are always welcome, please visit bucardo.org, file GitHub Issues, or post to
our email list.
SEE ALSO
Bucardo
COPYRIGHT
Copyright 2006-2018 Greg Sabino Mullane <greg@turnstep.com>
This program is free to use, subject to the limitations in the LICENSE file.
35 de 35 15/11/2018 03:11 p. m.