如何更快地在同一个 RDS 实例上复制 postgres 数据库?
How to make duplicate a postgres database on the same RDS instance faster?
先谢谢大家了。
我在 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 实例,但如果我可以在一个实例中执行此操作会容易得多。如果有任何建议,我将不胜感激。
(实例class是db.m4.xlarge)
正如马特所说;你有两个选择:
- 增加您的服务器大小,这会给您更多的 IOPS。
- 切换到预置 IOPS
因为这是一个临时要求,我会选择 1,因为你可以升级到最大。可用服务器 --> 进行数据库复制 --> 无缝降级数据库服务器,不会花费太多时间。将 SSD 切换到预配置 IOPS 将花费大量时间,因为它需要转换您的数据,因此需要更多的停机时间。稍后当您再次从配置的 iops 切换回 SSD 时,这将需要时间。
请注意,如果长期使用,1 和 2 都很昂贵(如果您真的不需要它们);所以你不能保持原样。
先谢谢大家了。
我在 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 实例,但如果我可以在一个实例中执行此操作会容易得多。如果有任何建议,我将不胜感激。
(实例class是db.m4.xlarge)
正如马特所说;你有两个选择:
- 增加您的服务器大小,这会给您更多的 IOPS。
- 切换到预置 IOPS
因为这是一个临时要求,我会选择 1,因为你可以升级到最大。可用服务器 --> 进行数据库复制 --> 无缝降级数据库服务器,不会花费太多时间。将 SSD 切换到预配置 IOPS 将花费大量时间,因为它需要转换您的数据,因此需要更多的停机时间。稍后当您再次从配置的 iops 切换回 SSD 时,这将需要时间。
请注意,如果长期使用,1 和 2 都很昂贵(如果您真的不需要它们);所以你不能保持原样。