【问题标题】:Database Mirroring / Postgres Streaming Replication数据库镜像/Postgres 流复制
【发布时间】:2011-06-01 20:57:43
【问题描述】:

我不是 DBA;我是基于企业数据库的应用程序的主要开发人员。

我目前正在寻找一些新机器来升级我们现有的企业数据库。目前,我们在 DR 站点上运行带有数据库的 Postgres 8.4,该数据库通过前雇员执行的一些自定义 rsync 工作定期接收更新。

我们试图解决的主要问题之一是两个全球办事处之间的延迟。我们在纽约有员工,在伦敦有员工。目前,伦敦员工遭受了我们 VPN 管道的命运。我真的无法改变那个基础设施。

我想做的是迁移到 Postgres 9 并设置流复制。奴隶将在伦敦办公室,这将减轻用户的阅读问题。我预见的问题是写入从机(不确定PG如何处理这个,我的理解是从机处于只读模式)。理想情况下,写入将由数据库本身发送到纽约的主服务器(伦敦的写入非常罕见,但必要)。此外,我可以设置故障转移以使其充当热插拔备份(替换 DR)。同样,所有内容都包含在 Postgres 配置中,无需额外代码。

这是我理想化的解决方案。我离我有多远?这是可能吗?

我对这个主题的广度有点不知所措,Google 并没有真正帮助我。我会感谢一些经验丰富的 DBA 提供的任何建议,包括轶事、相关文档或示例。

目前,如果相关的话,我们正在使用 SQLAlchemy 作为数据库的主要接口。这确实意味着我们不依赖于 Postgres。

谢谢大家。

【问题讨论】:

  • 如果有人明白这一点:Postgres 最终添加了主/主复制,这是我们最终使用的。在此之前,我在关键表上使用了一些带有时间戳的自定义代码来创建增量集并更新数据库。每晚(亚洲时段)使用先前的 rsync 方法完全同步数据库。 pgpool 的建议虽然不错,但在池塘的两边都有延迟。我可能配置错误,但这不是一个理想的解决方案。

标签: postgresql streaming replication database-backups


【解决方案1】:

pgpool-II 可以为您处理:

检查this example

【讨论】:

  • 酷。它也在 pkgsrc 中。我会试试这个。非常感谢。
  • 请注意 1 警告,如果您通过函数进行任何写入,则此解决方案将不起作用,因为 PgPool 只会将读取发送到 1 个主机和 functions are executed with a select statement,这意味着一个函数可以执行任何操作写入不会同步到所有主机。
【解决方案2】:

PostgreSQL 9 文档很好地概述了可用的选项。

http://www.postgresql.org/docs/9.0/static/different-replication-solutions.html

如果您不介意写入主服务器而不是从服务器,您可能需要查看 Slony,或者如果您愿意,请查看任何可用的多主复制技术。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多