使用有限的硬件资源进行Postgres负载均衡

时间:2017-10-25 16:51:14

标签: postgresql performance load-balancing

我一如既往地要完成任务和一些有限的硬件资源。

我需要使用单个数据库设置postgres服务器,其中包含一个大对象表(3TB +)和一些小的,访问量很大的表(<10 GB)。

我的旧物理服务器有大约5 TB的硬盘空间,CPU和RAM有限,我也可以使用更快(在CPU和RAM中)虚拟服务器 - 但存储空间有限。

我不会有太多的DELETE语句,大多数SELECT语句都会是最近的数据。将有一个同时连接完成所有工作,客户端只在一个主机上。

我看到几个场景:

  1. 在具有远程存储的虚拟机上进行Postgres(单个实例)
  2. 使用本地存储(单个实例)的旧硬件上的Postgres
  3. Postgres,两者都有,有某种复制(新数据的高速虚拟机,旧硬件上的旧数据速度低)
  4. 还有其他想法吗?
  5. 甚至可以复制postgres数据库的最新部分吗?

    90%的SELECT查询将是最新的~5-10千兆字节的数据,但我需要无缝访问其余的2,990 TB。

    我该怎么办? (购买适当的硬件除外;)

2 个答案:

答案 0 :(得分:1)

只要你有足够的RAM来缓冲10GB的大量访问数据,它就不重要了。

您需要一些额外的RAM才能读取大型对象而无需将10GB推出缓存,但这在当今的机器上不应该成为问题。

如果您的所有工作都是在一个连接上完成的,那么听起来数据库上没有高负荷。

所以我真的不担心按照这样的要求进行扩展。

您最担心的可能是如何在合理的时间内备份​​3TB数据。

编辑:如果您的内存少得多,则应该让机器的存储速度更快。

答案 1 :(得分:0)

最后,我检查了几种不同的场景,并决定不将文件/大对象保存在数据库中。

通过NFS(v4)安装数据库位置的Postgres有一些滞后 - 它更快但是它周期性地窒息了几秒钟,我决定在NFS上存储普通文件,这显然更慢但更稳定。

我确定有办法调整它,但这个解决方案也很好。

Postgres用于文件索引并将其文件保存在本地硬盘上。