下载大型数据库(postgres)到本地副本

下载大型数据库(postgres)到本地副本

我在 Amazon RDS 上有一个相当大的 postgres DB(压缩后大约 9GB),有时我们需要复制它并在本地机器上对其进行一些测试。

执行数据库转储(pg_dump)并下载它实在是太慢了,老实说,我们最近几次尝试时都卡住了。

有没有一种简单的方法可以以智能的方式获取数据库的各个部分?例如,仅获取过去 10 天的更改,然后我们可以将它们与我们拥有的本地数据库合并,或者可能以分块的形式获取数据库等?

我确信我不是第一个有这种需要的人,但找不到合适的方法或教程来解释最好的方法。

谢谢!

答案1

9GB 的压缩转储实际上并不算大。你只需要正确操作即可:

  • 从运行 RDS 数据库的同一 AWS 账户和区域中的 EC2 实例转储 — 而不是通过互联网;
  • 使用目录转储格式(--format=directory-Fd)——它会自动压缩;
  • 使用并行转储(例如--jobs=16-j16)和并行恢复;
  • sslmode=disable在连接字符串中使用或env PGSSLMODE=disable pg_dump …禁用 SSL - 某些版本的 AWS RDS 在单个连接上有 64GB 的 SSL 数据限制;
  • 请记住,从快照恢复的 RDS 数据库非常慢,直到所有数据至少被读取一次 - 第一次读取比正常速度慢 10 倍以上,因为数据是根据需要从存档存储(可能是 S3)中提取的 - 不要从最近从快照恢复的数据库执行此转储;
  • 仅在压缩状态下成功转储后才将其移出 AWS。

相关内容