哪个PostgreSQL复制解决方案用于我的特定场景
我需要复制一个PostgreSQL数据库服务器,如下所示:
两台服务器彼此相邻 - 一台是主服务器,另一台是备用服务器。 如果主站发生故障,备用站接管。 从主机到从机的复制需要是故障保护,因此是同步的。 除非已经成为主人,否则待机不会用于任何查询。 所以,不需要高可用性/负载平衡。
远程位置还有另一台备份服务器。 来自上述主服务器的数据将被异步并批量复制到该远程服务器。 在这个复制中,时间并不是一个因素 - 几个小时就好了。 该服务器将仅用于备份。
我研究了PostgreSQL文档以及Google的当前可用复制解决方案,但无法确定我需要哪种同步异步解决方案组合。
我想到的最接近的场景是使用pgpool-II,场景2使用猛犸象。然而,由于pgpool是基于语句的,包含rand()和now()的查询会发生什么?
请注意,我宁愿使用免费和开源的复制工具。
另外,只是一个侧面的问题 - 根据上面的情况1,当主控制器出现故障时,备用器件将接管。 之后主从角色会被颠倒,还是在主服务器恢复后,从服务器会回到待机状态?
任何建议将不胜感激。 谢谢。
您没有提及有问题的服务器是否在特定版本上,或者这是否是一个可自由选择版本的新项目。 答案根据这些信息而有所不同。
如果你从一个干净的石板开始,我会推荐基于PostgreSQL 9.1 beta的设计。 最终版本将在您准备进入生产环境并且内置二进制同步复制之前很久才会发布。
我几年来一直在PostgreSQL中使用内置的异步复制,几乎与你描述的完全相同,并且对我来说它一直非常稳定。 使用热备用9.0,它变得更好,配置和维护变得更容易。 9.1提供了您需要的唯一缺失的部分。
但是,如果您尝试复制现有服务器,那么对于“checkpoint_timeout”的积极设置的内置异步复制可能是足够经常备份的未归档WAL文件,直到您可以升级到9.1。
这里的底线是,您可以准确得到您想要的库存PostgreSQL 9.1 - 不需要任何第三方产品。
至于故障转移,它不是一个自动过程,您需要自己处理。 我建议在故障切换后,切换两台机器的角色,直到下一次故障切换事件或在计划中断期间受控的手动故障切换,但使用时间较长。 同样,这不是自动的,很多都是由管理员管理的(通过shell脚本推测)。
我建议对方案1使用DRBD,对于方案2,使用9.0内置复制或Slony。
在PostgreSQL 9.1(尚未发布)之前,没有其他同步复制解决方案可用,并且为此目的广泛建立了DRBD。 结合PostgreSQL监控和切换所需的所有脚本随附的Pacemaker或Heartbeat,您拥有一个非常强大且相当易于管理的解决方案。 (事实上,即使在9.1出现之后,我仍然会考虑继续使用DRBD;它会轻松很多,并且有更长的记录。)
对于跨站点异步,您可以尝试PostgreSQL 9.0的内置复制,也许与repmgr一起用于监视和管理。 或者,你可以尝试(现在有点)老派的Slony,但我想这会对你的需求更加复杂。
链接地址: http://www.djcxy.com/p/77377.html上一篇: Which PostgreSQL replication solution to use for my specific scenario