Bucardo
来自 PostgreSQL 维基
跳转到导航跳转到搜索概述
Bucardo 是一个适用于 Postgres 的复制系统,支持任意数量的源和目标(也称为主服务器和从服务器)。它是异步的,并且基于触发器。
状态
生产 版本 5.6.0
联系方式
一般信息
可扩展性 | 主从:级联从服务器,高度可扩展。多主:两个或更多 |
读取扩展 | 是 |
写入扩展 | 是(多主);否/略微反向(仅主从) |
触发器/过程 | 是 |
并行查询 | 否 |
故障转移/高可用性 | 不自动 |
在线配置 | 否 |
PostgreSQL 升级 | 是 |
分离节点/WAN | 是 |
需要 PostgreSQL 核心修改 | 否 |
编程语言 | Perl、PL/pgSQL、PL/PerlU |
许可证 | BSD |
完整的集群解决方案 | 是 |
PostgreSQL 版本 | 8.1 到 14 |
集群模型
异步级联主从复制,基于行,使用数据库中的触发器和队列 以及 异步主主复制,基于行,使用触发器和自定义冲突解决
通用模型:异步级联主从和/或主主。基于行,使用触发器和 LISTEN/NOTIFY。
Bucardo 需要一个专用数据库,并作为一个 Perl 守护进程运行,与该数据库以及参与复制的所有其他数据库进行通信。它可以作为多主或多从运行。
多主复制使用两个或更多个数据库,通过冲突解决(标准选择或自定义子程序)来处理两边相同的更新。
主从复制涉及一个或多个源指向一个或多个目标。源必须是 PostgreSQL,但目标可以是 PostgreSQL、MySQL、Redis、Oracle、MariaDB、SQLite 或 MongoDB。
用例
- 通过从服务器进行负载均衡
- 通过从服务器进行数据仓库
- 从服务器不受约束,可以写入
- 从一个 Postgres 版本升级到另一个版本
- 许多钩子允许在复制过程中动态更改数据,并简化缓存失效等操作。
- 部分复制
- 按需复制(更改可以自动推送或在需要时推送)
- 将处理 Postgres 版本 8.4 或更高版本的 TRUNCATE 复制。
- 从服务器可以“预热”以快速设置
缺点
- 无法处理 DDL(Postgres 对系统表没有触发器)
- 无法处理大对象(原因相同)
- 无法增量复制没有唯一键的表(它可以“完全复制”它们)
- 在 Postgres 8 之前的版本上无法使用
项目赞助商
支持
商业支持可从 End Point Corporation 获得。非商业支持可从 bucardo-general 邮件列表以及 irc.libera.chat 上的 #bucardo 频道获得。