PostgreSQL - 使用日志传送来逐步更新远程只读从站

时间:2011-01-28 06:44:12

标签: postgresql replication log-shipping

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

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

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

我的计划是:

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

注意:这里的关键是我只需要复制一次完整的数据库快照。此后,我只需要复制一天的WAL文件,以便让远程奴隶再次陷入困境。

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

这会有用吗? PostgreSQL是否支持这种重复恢复?

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

谢谢!

- S

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

你的计划应该有效 正如Charles所说,热备用是另一种可能的解决方案。它自8.2起受支持,对主服务器的性能影响相对较小。 热备份记录在手册中:PostgreSQL 8.4 Warm Standby

  

配置a的简短过程   备用服务器如下。完整的   每个步骤的详细信息,请参阅   前面提到的部分。

     
      
  1. 尽可能设置主系统和备用系统,   包括两个相同的副本   PostgreSQL在同一版本级别。
  2.   
  3. 设置从主存档到位于WAL存档的连续存档   在备用服务器上的目录中。   确保archive_mode,   archive_command和archive_timeout   在主要部分适当设置   (见第24.3.1节)。
  4.   
  5. 进行主服务器的基本备份(参见第24.3.2节),然后加载   这些数据到待机状态。
  6.   
  7. 从本地WAL存档开始在备用服务器上恢复,   使用指定a的recovery.conf   restore_command等待的   如前所述(见章节)   24.3.3)。
  8.   

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

其他信息:

Postgres Wiki about Warm Standby

Blog Post Warm Standby Setup