Postgresql

導入 postgres tar 文件會引發 postgres 12 中不支持的並行

  • November 16, 2020

我正在嘗試導入某人發送給我的數據庫:testdb.tar(43GB 大小)首先我使用以下方法導入:

pg_restore --host localhost --port 5432 --username postgres --dbname testdb --role postgres --no-password  --verbose testdb.tar

花了23個小時才完成。我想它只使用了一個核心。現在,嘗試使用可用的 16 個核心更快地完成它,我嘗試了:

pg_restore --host localhost --port 5432 --username postgres --dbname testdb --role postgres --no-password -j 16 --verbose testdb.tar

但是,它會引發以下錯誤:

pg_restore: error: parallel restore is not supported with this archive file format

不太清楚它為什麼抱怨。

我設法通過使用“-Fd”和目錄源名稱而不是 tar 源文件來使其工作。導出的目錄包含以下文件:3235.dat.gz … 3300.dat.gz、log.txt 和 toc.dat 所以,它可以通過以下方式工作:

pg_restore --host localhost --port 5432 --username postgres --dbname testdb --role postgres --no-password  -Fd -j 16 --verbose /path/to/testdb_directory

因為“tar”格式無法並行恢復。

使用“自定義”或“目錄”格式,pg_dump以便可以通過並行程序進行恢復。

但是 Jeff 有一個好主意(請參閱註釋):如果您將備份解壓縮到一個目錄中,那麼您可以通過將 pg_restore 指向該目錄來執行並行恢復。

引用自:https://dba.stackexchange.com/questions/279565