2015-06-02 50 views
3

恢復轉儲傾銷使用pg_dump的,像這樣一個數據庫後後在Postgres的一些主鍵缺少

pg_restore -d <database> --host=<host> -n public --username=<user> -W --exit-on-error --format=d -j 10 --verbose dump_bak 

...我們失去了我們的一些主鍵。看起來好像有一些已經恢復,但不是全部。

任何想法?

+2

任何錯誤信息:

pg_dump --verbose --host=<dbhost> --username=<username> --encoding=UTF-8 --file=<dumpfile> --format=d --jobs=10 --dbname=<dbname> 

與還原:

與放棄吧? – JiriS

+0

它們在所有表格,幾張表格或單個表格中是否缺失? –

+0

恢復期間沒有錯誤消息。他們在大多數表格中都沒有,但沒有。 –

回答

0

看來,Postgres在那裏有點關於現有連接的錯誤。我們已經找到了解決辦法:在還原過程中

export PGPASSWORD="<pwd>" 

#prevent new connections, kill existing connections 
sudo -u postgres /usr/bin/psql -q -c "update pg_database set datallowconn = 'false' where datname = '<dbname>'; SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '<dbname>';" 

#kick db 
sudo -u postgres dropdb <dbname> 

#recreate it 
sudo -u postgres createdb <dbname> 

#allow connections again 
sudo -u postgres /usr/bin/psql -q -c "update pg_database set datallowconn = 'true' where datname = '<dbname>';" 

#import data from dump 
pg_restore --verbose -d <dbname> --host=$1 --username=<username> -j 4 <dumplocation>