https://github.com/bucardo/bucardo https://bucardo.org/Bucardo/ Bucardo版本5.6.0需要如下组件: build, test, and /downloads/Bucardo-5.6.0.tar.gz tar -xzvf Bucardo-5.6.0.tar.gz cd Bucardo-5.6.0/ perl Makefile.PL make mkdir -p /var/run/bucardo chmod 777 /var/run/bucardo mkdir /var/log/bucardo/ chmod 777 /var/log/bucardo start #查看状态 bucardo status #重启 bucardo restart #停止 bucardo stop bucardo list syncs bucardo list dbgroups bucardo list dbs bucardo list tables bucardo list sequences bucardo list relgroups bucardo status bucardo
我们决定继续使用 Bucardo,因为它开源、速度快,并且提供了简单的监控和冲突解决机制。 Bucardo 的工作机制 Bucardo 充当两个 Postgres 实例之间的中间人。 你可以让 Bucardo 在你喜欢的任何机器上运行,只要它可以访问源数据库和目标数据库即可。安装并设置多主复制后,Bucardo 将为你选择复制的所有表添加一些额外的触发器。 小心漂移 一些在线指南建议,使用 Bucardo 的正确方法是获取源数据库的快照,将其恢复到新的数据库,然后启动一个多主 Bucardo 同步。不要那样做! Bucardo,你可能需要运行 uninstall_bucardo.sh 来清除旧触发器。 将所有应用切换到新数据库后,你可以停止 Bucardo 同步并下线它的机器。你应该再次运行 uninstall_bucardo.sh 以便从触发器清理你的新数据库。
多主解决方案如下: BDR (Bi-Directional Replication) xDB PostgreSQL-XL PostgreSQL-XC / PostgreSQL-XC2 Rubyrep Bucardo 2.6 Bucardo Bucardo是End Point公司的Jon Jensen和Greg Sabino Mullane开发的基于触发器的复制解决方案。 Bucardo已经存在了近20年,最初被设计为一个”懒惰“的异步解决方案,实现最终复制所有的更改。有一个Perl守护进程监听NOTIFY请求并对其执行操作。 表上发生的更改记录在表(bucardo_delta)中,并通知守护进程。守护进程通知控制器启动“kid”以同步表更改。如果存在冲突,则使用标准或自定义冲突处理程序对其进行处理。
常见的多主复制方案有:BDR(双向复制)、xDB、PostgreSQL-XL、PostgreSQL-XC / PostgreSQL-XC2、Rubyrep、Bucardo。 BDR(双向复制)、xDB、PostgreSQL-XL、PostgreSQL-XC / PostgreSQL-XC2、Rubyrep、Bucardo 1)BDR Bi-Directional Replication 自动设置必要的触发器,日志表等 ;自动发现新添加的表并同步表内容 ;自动重新配置序列,以避免重复的键冲突 6)Bucardo • Bucardo 是 End Point 公司的 Jon Jensen 和 Bucardo 的解决方案已经存在了将近 20 年,但安装和配置很复杂,复制经常中断并且出现错误。对 Perl 5,DBI,DBD :: Pg,DBIx :: Safe 的依赖。
Bucardo 基于行的异步级联主从复制,使用触发器在数据库中排队;基于行的异步主-主复制,基于行,使用触发器和自定义冲突解决方案。 Bucardo需要专用的数据库并作为Perl守护程序运行,该守护程序与此数据库以及复制中涉及的所有其他数据库进行通信。它可以作为多主机或多从机运行。 主从复制涉及到一个或多个目标的一个或多个源。
如Bucardo允许编写一段Perl代码。该处理程序通常不能在线提示用户,只能在后台进程运行 读时执行 检测到冲突时,所有冲突写入值都会被暂存。下次读时,会将数据的多版本返回给应用层。
-- partial --> <script> // Designed by: Mauricio Bucardo // Original image: // https://dribbble.com
这种升级方法可以用内置的逻辑复制工具和外部的逻辑复制系统如pglogical,Slony,Londiste,和Bucardo。
基于触发器的主-备复制 基于语句的复制中间件 异步多主控机复制 同步多主控机复制 最通用的实现 NAS DRBD 内建流复制 内建逻辑复制,pglogical Londiste,Slony pgpool-II Bucardo
Bucardo 是这种复制类型的一个例子。 同步多主控机复制 在同步多主控机复制中,每一个服务器能够接受写请求,并且在每一个事务提交之前,被修改的数据会被从原始服务器传送给每一个其他服务器。
基于触发器的主-备复制 基于语句的复制中间件 异步多主控机复制 同步多主控机复制 最通用的实现 NAS DRBD 内建流复制 内建逻辑复制,pglogical Londiste,Slony pgpool-II Bucardo
Bucardo 是这种复制类型的一个例子。 同步多主控机复制 在同步多主控机复制中,每一个服务器能够接受写请求,并且在每一个事务提交之前,被修改的数据会被从原始服务器传送给每一个其他服务器。
基于触发器方案的同步软件介绍 基本此方案做的同步软件较多,常见的开源软件有: slony bucardo skype公司开发的 longdist 后续 在众多Postgresql 高可用模式中,主要的参与者有两位
可以使用第三方工具Slony、Bucardo、Londiste、RubyRep等对表级别的复制进行归档。这些工具都是基于触发器的复制。PG也支持逻辑复制。
可以使用第三方工具Slony、Bucardo、Londiste、RubyRep等对表级别的复制进行归档。这些工具都是基于触发器的复制。PG也支持逻辑复制。
支持 PG10、9.6、9.5、9.4 ,提供比 Slony、Bucardo 或 Londiste 更快的复制速度,以及跨版本升级。
., pglogical Londiste, Slony pgpool-II型 Bucardo 通信方式 共享磁盘 磁盘块 WAL 逻辑解码 表行 SQL的 表行 表行和行锁 无需特殊硬件 • •
由于是由外部程序对变更进行捕捉,因此他的灵活性是最高的,像多主复制的冲突解决方案大部分都是基于触发器实现,比如 PostgreSQL 的 bucardo 就是基于 pg 的触发器来做多主的数据复制。
基于触发器的复制系统(如Slony、Londiste和Bucardo)将根本不会运行在后备服务器上,然而只要改变不被发送到要被应用的后备服务器,它们将在主服务器上运行得很好。
基于触发器的复制系统(如Slony、Londiste和Bucardo)将根本不会运行在后备服务器上,然而只要改变不被发送到要被应用的后备服务器,它们将在主服务器上运行得很好。