postgresql - 哪种 PostgreSQL 复制解决方案适用于我的特定场景

标签 postgresql replication

我需要按如下方式复制 PostgreSQL 数据库服务器:

  1. 两台服务器彼此相邻 - 一台为主,另一台为备用。如果主服务器发生故障,备用服务器将接管。从主到从的复制需要故障安全,因此是同步的。备用数据库不会用于任何查询,除非它已成为主数据库。因此,不需要高可用性/负载平衡。

  2. 在远程位置还有另一个备份服务器。上面提到的主服务器的数据会异步批量复制到这台远程服务器上。在此复制中,时间根本不是一个因素 - 几个小时就可以了。该服务器将仅用于备份。

我已经从 PostgreSQL 文档以及 Google 研究了当前可用的复制解决方案,但无法决定我需要哪种同步-异步解决方案组合。

我想到的最接近的方案是在场景 1 中使用 pgpool-II,在场景 2 中使用 Mammoth。但是,由于 pgpool 是基于语句的,包含 rand() 和 now() 的查询会发生什么情况?

请注意,我宁愿使用免费和开源的复制工具。

此外,只是一个附带问题 - 根据上面的场景 1,当 master 发生故障时,standby 将接管。之后是主从对调,还是主服务器恢复后从服务器回到备用状态?

如有任何建议,我们将不胜感激。谢谢。

最佳答案

我建议在场景 1 中使用 DRBD,在场景 2 中使用 9.0 内置复制或 Slony。

在PostgreSQL 9.1(尚未发布)之前,没有其他可用的同步复制解决方案,为此广泛建立了DRBD。与 Pacemaker 或 Heartbeat 一起,它们带有 PostgreSQL 监控和切换所需的所有脚本,您将拥有一个非常强大且相当易于管理的解决方案。 (事实上​​ ,我会考虑在 9.1 发布后继续使用 DRBD;它更容易并且有更长的跟踪记录。)

对于跨站异步,可以试试PostgreSQL 9.0自带的replication,或许可以配合repmgr进行监控管理。或者,您可以尝试(现在有点)老式的 Slony,但我猜它会更复杂,无法满足您的需求。

关于postgresql - 哪种 PostgreSQL 复制解决方案适用于我的特定场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572692/

相关文章:

postgresql - 如何优化postgresql过程

Redis SLAVE 在 MASTER 宕机时刷新数据

postgresql - 如何正确设置逻辑postgresql复制(两种方式)?

.net - SQL Server 2008 Express 无法用于合并复制?

php - 能否使用 PDO 和 PostgreSQL 返回多个结果集?

postgresql - 在 PostgreSql 中查找大型数据集中最近邻居的最佳查询是什么?

security - 到 Amazon EC2 的 PostgreSQL SSH 隧道?

java - 在 Java 8 中使用 Hibernate 5+ 的 PostgreSQL 9.6 DATE 列映射

Erlang 确保 Mnesia 模式复制

database - 关于复制方案/算法的文章?