Backup
PostgreSQL 備份/恢復
備份 postgresql 數據庫的最佳方法是什麼?
我嘗試使用 www.postgresql.org 上的文件,但在恢復時我總是遇到完整性錯誤。
現在我正在使用它進行備份:
pg_dump -U myuser -d mydatabase db.pg.dump
用於恢復:
pg_restore -c -r -U myuser -d mydatabase db.pg.dump
但我沒有得到想要的結果..
編輯:我應該注意,我的數據庫有很多外鍵..
我看到的一些錯誤是:
ERROR: current transaction is aborted, commands ignored until end of transaction block ERROR: zero-length delimited identifier at or near """" LINE 1: ..._text_id_fkey" FOREIGN KEY ("text_id") REFERENCES ""."wiki_t...
從 pg_restore 手冊頁:
pg_restore 是一個實用程序,用於從由 pg_dump(1) 以非純文字格式之一創建的存檔中恢復 PostgreSQL 數據庫。
從 pg_dump 手冊頁:
轉儲可以腳本或存檔文件格式輸出。腳本轉儲是純文字文件,其中包含將數據庫重建到保存時的狀態所需的 SQL 命令。要從這樣的腳本中恢復,請將其提供給 psql(1)。即使在其他機器和其他架構上,腳本文件也可用於重建數據庫;甚至在其他 SQL 數據庫產品上也進行了一些修改。
替代歸檔文件格式必須與 pg_restore(1) 一起使用來重建數據庫。它們允許 pg_restore 選擇要恢復的內容,甚至可以在恢復之前重新排序項目。
您並沒有告訴它以非純文字格式轉儲。您告訴它恢復非純文字格式。顯然這是行不通的。
從 pg_dump 手冊頁:
EXAMPLES To dump a database called mydb into a SQL-script file: $ pg_dump mydb > db.sql To reload such a script into a (freshly created) database named newdb: $ psql -d newdb -f db.sql To dump a database into a custom-format archive file: $ pg_dump -Fc mydb > db.dump To reload an archive file into a (freshly created) database named newdb: $ pg_restore -d newdb db.dump