【问题标题】:Postgresql database shared across multiple geographic locations跨多个地理位置共享的 Postgresql 数据库
【发布时间】:2011-11-28 08:24:00
【问题描述】:
我正在处理一个需要跨多个物理位置共享 Postgresql 数据库的项目。每个位置的连接性有限,每天可能只能访问外部世界一两次。因此,数据库必须在每个位置本地可用,但还必须尽可能与主数据库同步。
我还不熟悉复制或集群。这些是好的解决方案吗?或者有更好的方法吗?我会很感激这方面的一些建议。 :)
注意:来自不同位置的主键冲突不会成为问题,这已得到解决。
【问题讨论】:
标签:
postgresql
replication
cluster-computing
【解决方案1】:
如果远程位置需要对数据进行只读访问,您可以使用log shipping(PostgreSQL 的内置功能)相当轻松地设置异步复制。在此配置中,主服务器将 WAL(预写日志)文件放到共享位置,远程服务器可以在该位置定期连接并读取日志以使自己保持最新状态。
如果所有服务器都在独立执行写入,那么您正在寻找的是异步多主机复制。 Postgres 文档提到 Bucardo 和 rubyrep 作为实现此目的的选项。根据文档,两者都仅限于主到主复制(或主到多个从属),但据说 Bucardo 计划在 5.0 版中实现真正的多主复制,并且 rubyrep 提到了method 用于保持多个服务器同步。
(我的服务器使用 PostgreSQL 的日志传送和流式复制功能,但我没有使用 Bucardo 或 rubyrep 的直接经验。)