本地网络中的Postgresql server复制

本地网络中的Postgresql server复制,postgresql,replication,Postgresql,Replication,我的本地网络中有一台postgresql服务器,它托管内部ERP、电子商务和其他一些工具的内部数据库。尽管如此,我还是不断地向现有表中添加新行,因为我是通过网络进行的,所以这一过程不仅速度慢,而且会在高峰时间加载服务器。 我正在考虑插入另一台带有postgresql的服务器并使用此intance,但我需要某种复制—我在第二个实例上添加或修改的所有新数据,我希望与“主”服务器实例同步,反之亦然。 我以前从未这样做过,任何信息都会有所帮助。通过多主机复制进行此操作是查找问题的解决方案。与在当前问题的

我的本地网络中有一台postgresql服务器,它托管内部ERP、电子商务和其他一些工具的内部数据库。尽管如此,我还是不断地向现有表中添加新行,因为我是通过网络进行的,所以这一过程不仅速度慢,而且会在高峰时间加载服务器。 我正在考虑插入另一台带有postgresql的服务器并使用此intance,但我需要某种复制—我在第二个实例上添加或修改的所有新数据,我希望与“主”服务器实例同步,反之亦然。
我以前从未这样做过,任何信息都会有所帮助。

通过多主机复制进行此操作是查找问题的解决方案。与在当前问题的基础上添加另一组复杂的问题(多主机复制)相比,优化当前方法要好得多

如果您真的想以这种方式使用多主机复制,那么bucardo就是您要使用的工具。然而,这个答案的其余部分将寻找替代方案

你真正想做的第一件事就是优化你的批量装载。最好的方法是确保整个批量加载作为单个事务运行。这样可以减少磁盘命中率,并确保所有行同时可见。如果要进行大量插入和更新,可能需要先将所有内容加载到临时表中,然后运行一个查询,从临时表中更新数据库。在第9.2页中,您可以将temp表设置为unlogged,这也会给您带来一些性能优势(而且由于数据是暂时的,所以WAL不会为您买任何东西)


第二件事你应该做的,在你确认你的批量装载是在一个理智的方式完成后,是仔细分析一切。瓶颈并不总是在您认为的地方,有时问题可能是从触发器行为不端到缺少索引的一切。但看看在这一点上,性能问题实际上是什么。您可能会发现它们很容易修复。

Gregory Smith的PostgreSQL手册第25章和“PostgreSQL 9.0高性能”第14章如何。