我的本地网络中有一台 postgresql 服务器,它为内部 ERP、电子商务和其他一些工具托管内部数据库。尽管如此,我不断地向现有表添加新行,并且由于我是通过网络进行的,因此该过程不仅速度慢,而且会在高峰时段加载服务器。我正在考虑在其上插入另一个带有 postgresql 的服务器并使用此实例,但我想要某种复制 - 我在第二个实例上添加或修改的所有新数据,我想与“主”服务器实例同步,反之亦然-诗。我以前从未这样做过,任何信息都会有所帮助。
问问题
120 次
1 回答
0
通过多主复制执行此操作是寻找问题的解决方案。优化当前方法比在当前问题之上添加另一组复杂的问题(多主复制)要好得多。
如果您真的想以这种方式玩多主复制,那么 bucardo 是可以使用的工具。然而,这个答案的其余部分将寻找替代方案。
您真正想做的第一件事是优化批量加载。最好的方法是确保您的整个批量加载作为单个事务运行。这减少了磁盘命中,并确保所有行同时变得可见。如果您正在执行大量插入和更新,您可能希望首先将所有内容加载到临时表中,然后运行单个查询来从临时表中更新您的数据库。在 Pg 9.2 中,您可以将临时表设置为不记录日志,这也将为您带来一些性能优势(并且由于数据是瞬态的,WAL 不会给您带来任何好处)。
在您确认批量加载以合理的方式完成之后,您应该做的第二件事是仔细分析所有内容。瓶颈并不总是您认为的,有时问题可能是从触发器行为不端到缺少索引的所有问题。但是看看当时的性能问题实际上是什么。您可能会发现它们很容易修复。
于 2013-04-05T05:29:40.857 回答