2011-09-26 70 views
2

我花了相当多的时间试图了解如何在postgresql数据库服务器之间实现负载平衡(分配数据库处理负载)之后,我来到这里。postgresql的负载平衡/分配

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

可有人建议我,如果有任何简单(或复杂的)解决方案,以实现对上述方案?

回答

2

如果您的数据库小于100GB,那么您应该首先尝试从一台计算机获得最大化。

您将需要:

  • 一个良好的存储控制器,大容量电池支持的高速缓存;
  • 一堆RAID10中的快速磁盘;
  • RAID10 for WAL中的另一堆磁盘;
  • 更多的RAM比你有数据;
  • 尽可能多的快速处理器核心,你可以。

你可以用这台计算机做几千个tps。

如果它还不够,我会尝试添加第二个热备份服务器与流式复制。您将使用它来运行长时间运行的只读报告查询,备份等,这样您的主服务器就不必执行这些操作。

只有当它证明不够时,您应该尝试添加更多流式复制热备用服务器来平衡只读查询。虽然这会很复杂 - 因为它是异步的,因此在主站确认和备用站点之间发生变化时会有延迟。你必须在你的客户端应用程序中处理它。你的设置将变得更加复杂。

+0

谢谢,但对我来说,很显然我要跨越1000 tps的水平。那么我应该忽略上面提到的Skype解决方案吗?请明白,我也有“相同数量的插入+更新以及读取”。 – Muthu

+0

阅读是否可以看到稍微过时的数据 - 可能是几秒钟?如果不是,你将不得不为最繁忙的表使用分片或集群 - plproxy可能会帮助你,但它肯定不会容易或便宜(而且100k $在这里便宜)。雇用[顾问](http://www.postgresql.org/support/professional_support_northamerica)。 – Tometzky