下载一个大的数据库(postgres)到本地副本

我在Amazon RDS上有一个相当大的postgres数据库(压缩时大约9GB),有时我们需要复制它,并在我们的本地机器上做一些testing。

做一个数据库转储(pg_dump)并下载它太简单了,老实说,我们试过了几次。

有一个简单的方法来以聪明的方式获取数据库的一部分? 例如,只能得到最近10天的更改,然后我们可以将它们与本地数据库合并,也可以将数据块分块等等。

我确定我不是第一个有这种需求的人,但是找不到一个体面的方法或教程来解释最好的方法。

谢谢!

9GB压缩转储并不是那么大。 你只需要做正确的事情:

  • 从EC2实例转储到RDS数据库正在运行的相同AWS账户和地区 – 不通过互联网;
  • 使用目录转储格式( --format=directory-Fd ) – 它自动压缩;
  • 使用并行转储(例如--jobs=16-j16 )和并行恢复;
  • 在连接string或env PGSSLMODE=disable pg_dump …使用sslmode=disable env PGSSLMODE=disable pg_dump …以禁用SSL – 某些版本的AWS RDS在单个连接上具有64GB的SSL数据限制;
  • 请记住,从快照恢复的RDS数据库非常缓慢,直到所有数据至less读取一次 – 首先读取比正常慢10倍以上,因为数据是从存档存储(S3也许)按需提取 – 不要这样做从快照最近恢复的数据库转储;
  • 只有在压缩状态下成功转储后才能将其移出AWS。