【问题标题】:PostgreSQL - using log shipping to incrementally update a remote read-only slavePostgreSQL - 使用日志传送增量更新远程只读从站
【发布时间】:2011-01-28 06:44:11
【问题描述】:

我公司的网站使用 PostgreSQL 数据库。在我们的数据中心,我们有一个主数据库和一些只读从数据库,我们使用 Londist 在它们之间进行连续复制。

我想设置另一个只读从属数据库用于报告目的,并且我希望这个从属数据库位于远程位置(数据中心之外)。这个从站不需要 100% 是最新的。如果它长达 24 小时,那很好。另外,我想尽量减少我在主数据库上的负载。由于我们的主数据库白天忙,晚上空闲,我认为一个好主意(如果可能的话)是每晚让报告从站赶上一次。

我正在考虑为此使用日志传送,如上所述 http://www.postgresql.org/docs/8.4/static/continuous-archiving.html

我的计划是:

  1. 在主数据库上设置 WAL 归档
  2. 生成完整的数据库快照并将其复制到远程位置
  3. 恢复数据库并赶上它
  4. 进入稳定状态,其中:
    • DAYTIME -- 数据库落后,但人们可以查询它
    • 晚上——我复制了一天的 WAL 文件并让数据库赶上

注意:这里的关键是我只需要复制一次完整的数据库快照。此后,我应该只需要复制一天的 WAL 文件就可以让远程从站再次赶上。

因为在我想要一些反馈/建议之前我还没有完成日志传送。

这行得通吗? PostgreSQL 是否支持这种重复恢复?

您对如何设置远程半新鲜只读从站有其他建议吗?

谢谢!

--S

【问题讨论】:

    标签: postgresql replication log-shipping


    【解决方案1】:

    您的计划应该会奏效。
    正如查尔斯所说,热备用是另一种可能的解决方案。它从 8.2 开始受支持,对主服务器的性能影响相对较低。 热备记录在手册中:PostgreSQL 8.4 Warm Standby

    配置一个简短的过程 备用服务器如下。对于完整的 每个步骤的详细信息,请参阅 如前所述。

    1. 尽可能以几乎相同的方式设置主系统和备用系统, 包括两个相同的副本 PostgreSQL 在同一版本级别。
    2. 设置从主存档到位于 WAL 存档的连续存档 在备用服务器上的目录中。 确保archive_mode, archive_command 和 archive_timeout 适当地设置在主要 (参见第 24.3.1 节)。
    3. 制作主服务器的基本备份(参见第 24.3.2 节),然后加载 将此数据放到备用数据库中。
    4. 在备用服务器上从本地 WAL 存档开始恢复, 使用指定一个 recovery.conf restore_command 等待为 前面描述过(见第 24.3.3)。

    要仅实现夜间同步,您的archive_command 应该在白天以非零退出状态退出。

    附加信息:

    Postgres Wiki about Warm Standby

    Blog Post Warm Standby Setup

    【讨论】:

    • 暖备用不允许查询slave,需要9.0版本。
    【解决方案2】:

    9.0's built-in WAL streaming replication 旨在完成应满足您的目标的任务——可以接受只读查询的热备用或热备用。您是否考虑过使用它,还是暂时停留在 8.4 上?

    (此外,即将发布的 9.1 版本预计将包括 pg_basebackup 的更新/重写版本,这是一个为新从属创建初始备份点的工具。)


    更新:PostgreSQL 9.1 will include the ability to pause and resume streaming replication with a simple function call on the slave

    【讨论】:

    • 为什么是流式复制?根据您的链接,其目的是允许备用服务器保持比基于文件的日志传送可能的更新。
    • 感谢您的帮助!我们最终可能会切换到 9.0 的流复制——我们需要等待一个方便的时间来做。同时,我们特别不希望为我们的远程从站(例如 Slony 或 Londiste)使用更实时的复制系统,因为我们担心如果与远程从站的连接失败,那么主数据库可能会堆积大量- 将记录复制到这个不可用的奴隶(我们已经看到这种情况发生了,这不好)。使用日志传送,如果从服务器跟不上,那就太糟糕了(但它不会给主服务器带来过多的负载)。
    • @Shahaf:我对 WAL 流的理解是,它可以随时(手动或其他)暂停和恢复,只要 WAL 文件仍然存在,并且流不是很高-加载操作。
    • 您可以像以前一样将 9.0 的热备用部分与基于文件的日志传送一起使用 - 这是与流复制不同的功能(尽管它们可以很好地协同工作)。
    • @Shahaf,我已经更新了我的帖子,其中包含一些关于 9.1 新功能的酷消息,这似乎就在你的小巷里。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多