【发布时间】:2019-10-10 01:47:04
【问题描述】:
我正在尝试将我们在 heroku 公共空间中的 postgres db(版本 9.6.15)移动到 AWS RDS。 db 约为 2.2tb,位于 heroku 高级 7 层。
由于我发现从 heroku 进行实时复制几乎是不可能的,因为它们限制了设置复制的功能(根据我的理解),我希望看看我能以多快的速度转储数据并将其加载到RDS。
我正在寻找优化 pg_dumps 的方法,到目前为止我所做的是从 AWS 中的 ec2 实例 (m5.2xlarge) 运行它,以查看 pg_dumps 的运行速度。
在 ec2 上运行它时,我只能达到 10mb/秒,这非常慢,因为从这个意义上说,它需要大约 84 小时才能运行。
我这样运行pg_dumps:
sudo pg_dump postgres://user:pass@url:5432/db \
--jobs=24 \
--format=directory \
--file=/monodb/pgdump2 \
--verbose
我还能做些什么来加快导出速度,或者这只是对 heroku 出口带宽的限制?
【问题讨论】:
-
您是否尝试过从其他位置执行 pg_dump,即在本地启动它只是为了测量下载速度? 10mb/sec 是物理备份的硬限制 (devcenter.heroku.com/articles/…),因为 pg_dump 速率不应受到任何限制,除了数据库实例本身的能力。
-
是的...我已经从 AWS 上的 VM 和 GCP 上尝试过...当我查看时,两者似乎都以相同的下载速率在
iftop上运行,开始时大约为 ~3Gb以 2 秒的速率,然后在pg_dump的过程中以 2 秒的速率缓慢下降到 ~500Mb。 -
如果限制是从 Heroku 的出口,那么您可能无能为力 - 您验证了吗?您能否测试来自同一网络内的转储以查看其性能是否更好?
-
你关心速度吗?如果没有,您可以查看 aws 数据库迁移服务
-
不幸的是,AWS DMS 在这里无法工作,Heroku 不允许某些权限允许这种情况发生
标签: amazon-web-services heroku