PostgreSQL的负载均衡/分发

3

我在花费相当长的时间尝试理解如何在postgresql数据库服务器之间实现负载均衡(分配数据库处理负载)后来来到这里。

我的postgresql系统每秒吸引大约100个事务,而且这可能会增长。请注意,我的情况有很多更新+插入+选择。因此,任何解决方案都需要适用于所有插入/更新和读取。

有人能否建议我是否有任何简单(或复杂)的解决方案来实现上述情况?

1个回答

3
如果你的数据库小于100GB,那么你应该先尝试在一台计算机上充分利用它。
你需要:
- 一个带有大容量电池支持缓存的优秀存储控制器; - RAID10 模式下的一堆快速磁盘; - 另一组磁盘用于 WAL,并以 RAID10 模式配置; - 拥有比数据更多的内存; - 尽可能多的快速处理器核心。
有了这个设置,你可以在一台计算机上达到数千个 TPS。
如果这还不够,我建议增加第二个热备份服务器并进行流式复制。你可以使用它来运行长时间的只读报表查询、备份等操作,以减轻主服务器的负担。
只有当以上方法都无法满足需求时,才应考虑添加更多的流式复制热备份服务器以平衡只读查询负载。但这样做会更加复杂——因为它是异步的,所以主服务器确认变化后与备份服务器看到变化之间存在延迟。你必须在客户端应用程序中处理此问题。你的设置将更加复杂。

谢谢,但对我来说很明显我也会超过1000 tps的水平。那么我应该忽略上面提到的Skype解决方案吗?请理解我还有“相等数量的插入+更新以及读取”。 - Muthu
读取稍微过时的数据(可能几秒钟)是否可接受?如果不行,那么您将需要为最繁忙的表使用分片或集群 - plproxy 可能会帮助您解决问题,但这绝对不会容易或便宜(在这里 10 万美元是便宜的)。请聘请顾问 - Tometzky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接