【问题标题】:What is the best practice to expand GCE root persistent disk size of the running instance扩展运行实例的 GCE 根永久磁盘大小的最佳做法是什么
【发布时间】:2014-09-09 02:04:02
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    通常,您可以保持数据库集群原样并添加一个新的TABLESPACE。使用的目录应位于单独的磁盘上以获得最佳性能。这不会强加任何停机时间。

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

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

    Per documentation:

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

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

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

    通常,这种布局甚至比将您的实例移动到单个新磁盘(除非您当前的磁盘明显较慢)更快,因为 Postgres 可以从两个(或更多)磁盘的组合 I/O 中获益。

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

    【讨论】:

      【解决方案2】:

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

      您可以参考以下文章了解更多信息 https://developers.google.com/compute/docs/disks#creating_snapshots

      【讨论】:

      • 我可以将之前实例的相同网络 IP 分配给具有更大磁盘的新实例吗?
      • 为了获得该实例的静态 IP,您需要为您的项目保留一个 IP,然后您才能将该 IP 分配给该实例。但是,保留和 IP 需要额外付费。您可以在以下文章中找到更多信息developers.google.com/compute/docs/…
      • 我建议不要这样做。更好的解决方案是将另一个磁盘附加到正在运行的实例并将 postgresql 数据移动到该新磁盘。
      猜你喜欢
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 2019-02-08
      • 2019-01-26
      • 2019-04-01
      • 2016-02-20
      • 2014-09-24
      • 1970-01-01
      相关资源
      最近更新 更多