扩展正在运行的实例的GCE根持久磁盘大小的最佳做法是什么

时间:2014-07-18 02:31:59

标签: postgresql database-design scalability google-compute-engine

我正在为PostgreSQL运行一个实例,其磁盘大小为10G,现在几乎已满。

使用更大的磁盘为PostgreSQL创建一个新实例可能是一个选项,但是我认为在其他实例上更改数据库设置内容需要花费很多时间。

是否有最佳做法来扩展正在运行的实例的磁盘大小并最大限度地减少停机时间?

2 个答案:

答案 0 :(得分:1)

您可以拍摄磁盘的快照。比使用该快照创建更大的磁盘。最后用更大的磁盘创建一个实例。

有关详细信息,请参阅以下文章 https://developers.google.com/compute/docs/disks#creating_snapshots

答案 1 :(得分:0)

通常情况下,您可以保持数据库集群添加新的TABLESPACE。使用的目录应位于单独的磁盘上以获得最佳性能。这不会导致任何停机。

不确定这如何适用于Google Compute Engine。 “单独磁盘”方面几乎不适用于云服务。可能只需增加可用空间而不对Postgres安装本身进行任何更改。谷歌应该告诉你 - 你正在为他们的服务买单。

CREATE TABLESPACE space2 LOCATION '/path/to/postgres/data';

Per documentation:

  

该位置必须是由其拥有的现有空目录   PostgreSQL操作系统用户。随后创建所有对象   表空间内的内容将存储在该目录下的文件中。

然后,您可以在新表空间中创建新对象(表,索引,..)或整个数据库,或使用ALTER命令在那里移动对象。表空间是全局对象,并由集群中的所有数据库共享:

  

创建后,可以从任何数据库使用表空间,前提是   请求用户有足够的权限。

通常,此布局比将实例移动到单个新磁盘更快(除非您当前的磁盘速度慢得多),因为Postgres可以从两个(或更多)磁盘的组合I / O中获利。

请务必阅读手册中的详细信息,尤其是default tablespace