PostgreSQL Replication Solutions - Bruce Momjian

manlybluegooseΔιαχείριση Δεδομένων

27 Νοε 2012 (πριν από 4 χρόνια και 8 μήνες)

282 εμφανίσεις

PostgreSQL
Replication Solutions
BRUCE MOMJIAN
February,2012
Replication is a complex feature.POSTGRESQL supports a variety
of replication options.
Creative Commons Attribution License http://momjian.us/presentations
PostgreSQL,Replication Solutions 1/18
Uses for Replication
Theolotech.com
PostgreSQL,Replication Solutions 2/18
Fail Over
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
PostgreSQL,Replication Solutions 3/18
Data Warehousing
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
PostgreSQL,Replication Solutions 4/18
Load Balancing
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
PostgreSQL,Replication Solutions 5/18
Remote Servers
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
PostgreSQL,Replication Solutions 6/18
Mobile Servers
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
PostgreSQL,Replication Solutions 7/18
Replication Solutions
Taotaomona Computing
PostgreSQL,Replication Solutions 8/18
Shared Storage
Network−Attached
Storage (NAS)
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿

No overhead

No data loss on fail-over

Slave cannot execute
queries
PostgreSQL,Replication Solutions 9/18
Storage Mirroring
DRBD
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿

No overhead on master

Synchronous or
asynchronous

Possible data loss on
fail-over when using
asynchronous

Slave cannot execute
queries
PostgreSQL,Replication Solutions 10/18
Streaming Replication
Write
Ahead
Log
(WAL)
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿

No overhead on master

Slaves can execute queries

Possible data loss on
fail-over when using
asynchronous mode

Synchronous option
available (Postgres 9.1)
PostgreSQL,Replication Solutions 11/18
Slony
Asynchronous
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿

Triggers add overhead to
the master

Possible data loss on
fail-over

Replication possible even
over slow links

Slave can execute
read-only queries

Table-level granularity
allows complex data
partitioning configurations
PostgreSQL,Replication Solutions 12/18
Slony Internals
Subscribers
Other
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
Slonik
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
...
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
CREATE
TABLE
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
modifications
Subscriber
Origin
User User
sl_log sl_log
CREATE
TRIGGER
fills sl_log
TRIGGER
CREATE
prevents
PostgreSQL,Replication Solutions 13/18
Slony Master Switching
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿￿￿￿￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
￿￿￿
User
sl_log sl_log
Subscriber
Origin
User User
sl_log
sl_log
Subscriber
Origin
User
PostgreSQL,Replication Solutions 14/18
Bucardo
with Conflict Resolution
Asynchronous
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿

Similar to Slony,except
multi-master with conflict
resolution

Conflict resolution rules
are user-configurable
PostgreSQL,Replication Solutions 15/18
Pgpool II
connection daemon
host
to a single
SELECTINSERT, UPDATE,
DELETE to all
hosts
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿

Automatically
load-balances read queries

Queries with
non-deterministic behavior
can cause inconsistency

Allows parallel query
execution on all nodes

Also does connection
pooling and query caching
PostgreSQL,Replication Solutions 16/18
Pgpool II With Streaming Replication
connection daemon
host
to any single
SELECTINSERT, UPDATE,
DELETE to master
host
Slave SlaveMaster
replication
replication
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿￿￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
￿
Streaming replication avoids
the problem of
non-deterministic queries
producing different results on
different hosts.
PostgreSQL,Replication Solutions 17/18
Summary
Asynch-
Synch-
Statement-
chronous
chronous
Shared
File
Transaction
Trigger-
Based
Multi-
Multi-
Disk
System
WAL Log
based
Replication
Master
Master
Feature
Fail-over
Replic.
Shipping
Replic.
Middleware
Replic.
Replic.
Most Popular
Implementation
NAS
DRBD
Log shipping
Slony
pgpool-II
Bucardo
Communication
disk
table
table
table rows
Method
shared disk
blocks
WAL
rows
SQL
rows
&row locks
No Special
hardware required






Allows multiple
master servers



No master server
overhead



No waiting for
multiple servers




Master failure will
never lose data




Slaves accept
read-only queries





Per-table
granularity



No conflict
resolution
necessary





http://momjian.us/presentations
PostgreSQL,Replication Solutions 18/18