Postgresql

將大數據庫(postgres)下載到本地副本

  • December 23, 2016

我在 Amazon RDS 上有一個相當大的 postgres 數據庫(壓縮後大約 9GB),有時我們需要複製它並在本地機器上對其進行一些測試。

進行數據庫轉儲(pg_dump)並下載它太慢了,老實說,我們最近幾次嘗試都卡住了。

有沒有一種簡單的方法可以智能地獲取部分數據庫?例如,僅獲取最近 10 天的更改,然後我們可以將它們與我們擁有的本地數據庫合併,或者可能以塊的形式獲取數據庫等?

我確定我不是第一個有這種需求的人,但找不到合適的方法或教程來解釋最好的方法。

謝謝!

9GB 壓縮轉儲並沒有那麼大。你只需要正確地做:

  • 從執行 RDS 數據庫的同一 AWS 賬戶和區域中的 EC2 實例轉儲——而不是通過 Internet;
  • 使用目錄轉儲格式(--format=directory-Fd)——它是自動壓縮的;
  • 使用並行轉儲(例如--jobs=16or -j16)和並行恢復;
  • sslmode=disable在連接字元串中使用或env PGSSLMODE=disable pg_dump …禁用 SSL — 某些版本的 AWS RDS 在單個連接上限制 64GB 的 SSL 數據;
  • 請記住,從快照恢復的 RDS 數據庫非常慢,直到至少讀取一次所有數據 - 第一次讀取比正常速度慢 10 倍以上,因為數據是按需從存檔儲存(可能是 S3)中提取的 - 不要這樣做從最近從快照恢復的數據庫中轉儲;
  • 僅在以壓縮狀態成功轉儲後將其移出 AWS。

引用自:https://serverfault.com/questions/821590