我们的 Web 应用程序的流量越来越大,这让我们可怜的 pg8.3 数据库服务器有点难以跟上。我考虑过使用 pgpool II 对数据库进行集群以减轻一点压力,考虑到我将对实时数据库进行集群,我想知道应该如何做才能最大限度地减少停机时间。
有人有过这样的经历或者知道任何可以遵循的指南吗?谢谢 :)
答案1
首先,你确定集群能解决你的性能问题吗?你考虑过吗:
- 缓存。如果您有使用率很高且影响数据库的“公共”页面,那么前端缓存的设置非常简单,而且可能会产生奇效(想想 httpd + mod_cache)
- 优化您的应用程序。我假设您已经知道您的瓶颈是 Postgres。在一天的日志上运行 pgFouine,找到最热门的查询,对它们进行索引或尝试避免它们。
- 改进 Postgres 服务器上的硬件。如果您的 CPU 受限(罕见情况),也许更好的 CPU 或更多核心会有所帮助。您可以随时添加更多 RAM,以便缓存更多内容(并确保使用它!Postgres 默认内存设置非常保守 - 这可能是您的问题,请检查您是否使用了所有 RAM)。此外,足够大的 RAID10 阵列将创造奇迹...
如果你想设置集群,在 Postgres 领域,我倾向于认为它应该更多地用于可用性目的而不是性能目的,pgpool 提供了一些技巧来复制数据库,并且停机时间非常短(http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-en.html#online-recovery)。