The add database command is used to teach Bucardo about a database that will be involved in replication. It is usually the first step performed after the initial install.


bucardo add database A dbname=sales

This will creates a new database entry named A which resides on host and is named sales. Note that “sales” is the actual database name that Bucardo will connect to, while “A” is how Bucardo refers to this specific database, for example when calling add dbgroup. A connection to the database will be attempted right away: see the Verification section below.


bucardo add database ` `<dbname=value>` [optional arguments]`

The alternate form add db is also accepted.

Required arguments:

  • dbname (can also use ‘db’)
    • The database to connect to.

Optional arguments:

  • dbtype (can also use ‘type’)
    • The type of database we are connecting to. Defaults to ‘postgres’. Other options are drizzle, mongo, mysql, oracle, redis, and sqlite.
  • dbuser (can also use ‘username’ or ‘user’)
    • The username to connect as. Defaults to ‘bucardo’.
  • dbpass (can also use ‘password’)
  • dbport (can also use ‘port’)
    • The database port to connect to.
  • dbhost (can also use ‘host’)
    • The database host to connect to.
  • dbconn (can also use ‘conn’)
    • Additional connection parameters. For example, to specify a SID when using an Oracle target:

bucardo add db foobar type=oracle user=scott conn=sid=abc

  • status
    • Defaults to ‘active’; the only other choice is ‘inactive’
  • dbgroup
    • Which internal database group to put this database into. Will be created if needed.
  • addalltables
    • Automatically add all tables inside of this database. For finer control, see add_table
  • addallsequences
    • Automatically add all sequences inside of this database
  • server_side_prepares (can also use ‘ssp’)
    • For Postgres databases only, determines if we should use server-side prepares. The default is 1 (on). This may need to be 0 if you are using a connection pooler such as PgBouncer which may get confused by usage of server-side prepares.
  • dbservice
    • For Postgres databases, the “service name” to use


Before a new database is added, a simple connection test if performed to make sure everything is working. Thus, you will need to have the database up and running, as well as have installed any extra Perl modules needed to reach the database. The additional Perl modules you need depend on the database type:

  • Postgres: DBD::Pg
  • Drizzle: DBD::Drizzle
  • Mongo: MongoDB
  • Oracle: DBD::Oracle
  • Redis: Redis
  • SQLite: DBD::SQLite


New databases cause an insert to the bucardo.db table. A new database group will cause an insert to the bucardo.dbgroup table. Databases added to that group will cause an insert to the bucardo.dbmap table. Adding tables and sequences will cause inserts to the bucardo.goat table.

See also: