2011-10-12 64 views
0

即時通訊編輯嘗試編寫一個python腳本,該腳本獲取postgres數據庫的快照並恢復這些快照。試圖讓pg_dump> data.sql工作是一場噩夢,我遇到了一個想讓我經歷過你們的想法。製作postgres db的快照im

的想法是按照這個邏輯,用於取快照:

1 - stop the postgres daemon 
2 - copy the {postgres}/data folder out 
3 - start the daemon 

然後恢復快照:

1 - stop the postgres daemon 
2 - delete the {postgres}/data folder 
3 - copy the snapshot data folder in place 
4 - reset the permissions of the data folder to the postgres user 
5 - start the daemon 

這是一個測試數據庫,所以停機時間不是問題。

+0

呃,如果你不瞭解postgres的內幕,這看起來像是一個糟糕的策略。 pg_dump存在的原因。也許你應該問如何讓pg_dump正常工作? – beerbajay

回答

1

如果你的問題是如何從一個Python腳本運行的命令,你可以使用subprocess.Popen()運行shell命令,如sudo /etc/init.d/postgresql-x.x stop

但是,在我看來,你應該使用pg_dumppg_restore事業,他們將以更安全高效的方式完成這項工作,並且不需要停止Postgres守護進程。

查看PostgreSQL文檔中的pg_dumppg_restore章節。