Bucardo replication

Postgres masters, other slaves

Josh Williams

End Point Corporation

Bucardo

State of Bucardo

Bucardo strengths

Bucardo strengths

Bucardo limitations

Bucardo 5

Bucardo use cases

Installing the software

Installing the daemon

Adding databases

Adding tables

dbgroups, herds, and syncs

Adding syncs

Starting it up

$ bucardo status alpha

======================================================================
Last good             : Sep 10, 2011 16:16:14 (time to run: 1s)
Rows deleted/inserted : 26 / 26
Last bad              : Aug 26, 2011 08:44:19 (time until fail: 1s)
Sync name             : alpha
Current state         : Good
Source herd/database  : h1 / PG1
Tables in sync        : 7
Status                : active
Check time            : none
Overdue time          : 00:00:00
Expired time          : 00:00:00
Stayalive/Kidsalive   : yes / yes
Rebuild index         : No
Ping                  : yes
Onetimecopy           : No
Post-copy analyze     : Yes
Last error:           : Failed : DBD::Pg::db pg_result failed: ERROR:  relation "public.regions" does not exist
LINE 1: /* Bucardo 5.0.0 */DELETE FROM public.regions WHERE name = A...
                                       ^ at /usr/local/lib/perl5/site_perl/5.10.0/Bucardo.pm line 7482. Line: 3787 Main DB state: ? Error: none DB PG1 state: ? Error: none DB PG2 state: 42P01 Error: 7  (KID 29510)
======================================================================

Recap

Sync kicks

  1. Trigger (statement-level on all tables in the sync)
  2. Timeout (you pick the time)
  3. Manual kick (command line, via cron, from another script, even customcode)

How it works

How it works

How it works

Multimaster in real life

customname

customcols

About that DDL...

Flatfiles, aka log shipping

Exceptions

Conflicts

Customcode

Current Sources

Future Sources

Current Targets

Future Targets

Contact