【问题标题】:How to make duplicate a postgres database on the same RDS instance faster?如何更快地在同一个 RDS 实例上复制 postgres 数据库?
【发布时间】:2017-07-28 16:40:14
【问题描述】:

提前谢谢你们。

我在 aws 上有一个 60GB 的 Postgres RDS,并且这个 RDS 实例中有 databaseA,我想在同一个 RDS 服务器中复制一个名为 databaseB 的 databaseA。

所以基本上我尝试的是运行CREATE DATABASE databaseB WITH TEMPLATE databaseA OWNER postgres;这个单个查询需要6个小时才能完成,这太慢了。我看到这个过程中的最大 IOPS 是 120,甚至没有接近 aws general SSD 的限制 10,000 IOPS 的限制。我也尝试在参数组中调整work_mem、shared_buffers、effective_cache_size,完全没有任何改进。

我的最后一个选择是只创建两个单独的 RDS 实例,但如果我能在一个实例中执行此操作会容易得多。如有任何建议,我将不胜感激。

(实例类为db.m4.xlarge)

【问题讨论】:

  • 你的RDS实例是什么类?有没有尝试过更强大的 RDS 实例类?
  • 我是db.m4.xlarge
  • 对于 SSD 存储,您不会自动获得 10,000 IOPS。最大 IOPS 取决于大小。尝试 (a) 增加存储大小,或 (b) 切换到预配置 IOPS。

标签: sql postgresql amazon-web-services amazon-rds postgresql-9.6


【解决方案1】:

正如马特所说;你有两个选择:

  1. 增加您的服务器大小,这将为您提供更多 IOPS。
  2. 切换到预配置的 IOPS

因为这是一个临时要求,我会选择 1,因为你可以升级到最大。可用服务器 --> 进行数据库复制 --> 无缝降级数据库服务器,不会花费太多时间。将 SSD 切换到预置 IOPS 将花费大量时间,因为它需要转换您的数据,因此需要更多停机时间。稍后,当您再次从配置的 iops 切换回 SSD 时,这将需要时间。

请注意,如果长期使用,1 和 2 都很昂贵(如果你真的不需要它们);所以你不能让它保持原样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-27
    • 2016-02-18
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 2022-01-13
    相关资源
    最近更新 更多