我正在开发一个需要在多个物理位置共享Postgresql数据库的项目。每个位置都具有有限的连接性,并且每天只能访问一次或两次外部世界。因此,数据库必须在每个位置本地可用,但必须尽可能与master数据库同步。
我还不熟悉复制或群集。这些好的解决方案吗?或者有更好的方法吗?我会对此提出一些建议。 :)
注意:来自不同位置的主键冲突不会成为问题,这已经得到了解决。
答案 0 :(得分:3)
如果远程位置需要只读访问数据,则可以使用log shipping相当轻松地设置异步复制,Bucardo是PostgreSQL的内置功能。在此配置中,主服务器将WAL(预写日志)文件丢弃到共享位置,远程服务器可以在该位置定期连接并读取日志以使其自身保持最新。
如果所有服务器都独立执行写操作,那么您需要的是异步多主复制。 Postgres文档提到了rubyrep和method作为完成此任务的选项。根据文档,两者都限于主从主复制(或主从多个从属),但Bucardo应该为5.0版本计划真正的多主复制,并且rubyrep提到{{3}}用于保留多个服务器同步。
(我的服务器使用PostgreSQL的日志传送和流复制功能,但我没有使用Bucardo或rubyrep的直接经验。)