具有按需刷新的只读查询的Postgresql冗余

时间:2016-04-12 11:16:38

标签: postgresql replication

我想知道是否有任何postgresql工具可以促进按需复制到只读服务器。这是问题描述:

  • 每个数据更改过程都作为多个事务运行(过程很复杂 - 例如,加载数据,运行计算,运行更多数据等)。在流程完成之前,我认为数据库不一致用于报告。

  • 报告应仅使用一致的数据,但不应等待数据更改过程完成 - 它们应使用旧的(一致的)数据

理想情况下,报告应在数据库的一致快照上运行。 解决这个问题的想法如下:

  • 有两个服务器 - 主服务器和从服务器。最初都有完全相同的数据。
  • 所有数据更改流程都将在主
  • 上运行
  • 所有报告任务都将在slave上运行
  • 一旦数据更改过程完成,将触发刷新从站。触发器将是例如:运行一些命令,在文件系统上创建文件等。读取部分刷新的从站不被允许。
    • 这不会花太长时间 - 应与主人的变化大小成比例

Slave不会用于故障转移,这不是目的。

这个问题有什么好的解决方案吗?或者也许它可以用不同的方式解决?

1 个答案:

答案 0 :(得分:0)

看起来有一个很好的解决方案。 Postgres> = 9.2有可能导出当前事务的快照ID。每个使用相同快照ID的事务都会在开头看到相同的数据。

就我而言,我可以创建一个“虚拟”事务并将其快照导出。虚拟交易不会做任何事情,它会在流程开始时启动,在流程完成时启动。所有报告都将使用此快照ID来报告当创建虚拟事务时当前可见的数据。

有关快照的更多信息,请访问:https://www.willglynn.com/2013/10/25/postgresql-snapshot-export/