2017-02-17 82 views
2

由以下無法從pg_dump導入新的數據庫,內存不足。 PSQL cloned_db <db_backup.sql

pg_dump dbname | gzip > filename.gz 

建立遠程數據庫的備份做,我想將其導入到

CREATE DATABASE new_clone; 

試圖通過導入到新的數據庫一個新的數據庫以下命令:

gunzip -c /path/to/backup/filename.sql.gz | psql new_clone 

工作,數據庫的進口件,但遇到了錯誤

out of memory 

沒有其他信息......大多數表和模式已經出現,但我無法克服這個問題。

香港專業教育學院試圖做一個簡單的

pg_dump dbname > filename 

psql dbname < infile 

嘗試沒有壓縮,它也將失敗。 我的猜測是數據庫內的blob太大?有沒有辦法跳過導致錯誤的斑點?

數據庫大小爲10GB未壓縮,2.2GB壓縮。我有135GB的可用磁盤空間和32GB RAM。運行ubuntu 14.04,postgres v 9.6.2

感謝任何幫助。謝謝。

+0

首先,嘗試找出OOM的來源。如果來自數據庫服務器,它應該在日誌文件中。嘗試提高操作系統內存限制,看看你是否可以擺脫它。要縮小發生問題的位置,請使用'psql'的'-e'選項,以便在查詢執行時查看查詢;這樣你可以找出問題發生的地方。 –

+0

它可能已經完成。我使用-e選項,我看到以下內容: - - PostgreSQL數據庫的轉儲完整 - 錯誤:內存不足 細節的:不能放大包含由2120117492更加有0字節的字符串緩衝區。 –

+0

查看導入的服務器的PostgreSQL日誌文件。你應該看到哪個語句導致錯誤。 –

回答

0

我有同樣的問題。小挖之後我發現這不是psql的問題,但是sdin:在更改COPY ... FROM stdinCOPY ... from '/path/to/file/with.dump'之後都變好了。所以,當你嘗試通過stdin,恕我直言,操作系統,而不是psql喂psql,嘗試加載所有轉儲到內存中,並且,作爲轉儲更大,比內存進程可以有,你有錯誤。

PS我很抱歉我的英語不好,它不是我的母語。

相關問題