Postgresql
將大數據庫(postgres)下載到本地副本
我在 Amazon RDS 上有一個相當大的 postgres 數據庫(壓縮後大約 9GB),有時我們需要複製它並在本地機器上對其進行一些測試。
進行數據庫轉儲(pg_dump)並下載它太慢了,老實說,我們最近幾次嘗試都卡住了。
有沒有一種簡單的方法可以智能地獲取部分數據庫?例如,僅獲取最近 10 天的更改,然後我們可以將它們與我們擁有的本地數據庫合併,或者可能以塊的形式獲取數據庫等?
我確定我不是第一個有這種需求的人,但找不到合適的方法或教程來解釋最好的方法。
謝謝!
9GB 壓縮轉儲並沒有那麼大。你只需要正確地做:
- 從執行 RDS 數據庫的同一 AWS 賬戶和區域中的 EC2 實例轉儲——而不是通過 Internet;
- 使用目錄轉儲格式(
--format=directory
或-Fd
)——它是自動壓縮的;- 使用並行轉儲(例如
--jobs=16
or-j16
)和並行恢復;sslmode=disable
在連接字元串中使用或env PGSSLMODE=disable pg_dump …
禁用 SSL — 某些版本的 AWS RDS 在單個連接上限制 64GB 的 SSL 數據;- 請記住,從快照恢復的 RDS 數據庫非常慢,直到至少讀取一次所有數據 - 第一次讀取比正常速度慢 10 倍以上,因為數據是按需從存檔儲存(可能是 S3)中提取的 - 不要這樣做從最近從快照恢復的數據庫中轉儲;
- 僅在以壓縮狀態成功轉儲後將其移出 AWS。