2014-07-05 106 views
2

如何以轉儲數據的用戶名,數據庫名稱和模式名稱與我部署的服務器上的這些變量匹配的方式轉儲我的數據庫模式和數據?如何使用PostgreSQL將數據遷移到遠程服務器?

我目前的過程需要分兩步移動數據。首先,我轉儲數據庫的模式(pg_dump --schema-only -C -c),然後使用pg_dump --data-only -C轉儲出數據,並使用psql命令將它們在遠程服務器上串聯恢復。但是,必須有比這更好的方法。

+0

什麼的PostgreSQL的版本? –

+0

您是否考慮過複製而不是轉儲/恢復? –

+0

@DwayneTowell我從來沒有做過複製。我認爲複製用於多服務器設置。我現在只有一臺服務器。你可以給我一些方向,從哪裏可以找到關於這個主題的資源嗎? – picardo

回答

3

我們使用以下來複制數據庫。

pg_basebackup -x -P -D /var/lib/pgsql/9.2/data -h OTHER_DB_IP_ADDR -U postgres 

它要求OTHER_DB_IP_ADDR「主」服務器運行復制服務和pg_hba.conf必須允許複製連接。您不必爲了複製而將「奴隸」服務作爲熱備用服務運行。與轉儲/恢復相比,此方法的一個缺點是,恢復操作有效地吸引並重新編制索引並重置所有內容,而複製不會,因此如果您的數據庫已大量編輯,則複製可以使用更多的磁盤空間。另一方面,由於索引不需要重建,因此複製速度要快得多(在我們的例子中爲15分鐘vs 3小時)。

的一些有用參考:

http://opensourcedbms.com/dbms/setup-replication-with-postgres-9-2-on-centos-6redhat-el6fedora/

http://www.postgresql.org/docs/9.2/static/high-availability.html

http://www.rassoc.com/gregr/weblog/2013/02/16/zero-to-postgresql-streaming-replication-in-10-mins/

+0

很多很多,謝謝。 – picardo

相關問題