我正在將生產PostgreSQL數據庫複製到開發服務器。做這件事最快,最簡單的方法是什麼?將PostgreSQL數據庫複製到另一臺服務器
回答
你並不需要創建一箇中間文件。您可以
pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname
或
pg_dump -C -h remotehost -U remoteuser dbname | psql -h localhost -U localuser dbname
使用psql
或pg_dump
連接到遠程主機做。
對於大型數據庫或連接速度較慢的情況,轉儲文件和傳輸壓縮文件可能會更快。
由於科內爾說沒有必要轉儲到一箇中間文件,如果你想工作壓縮就可以使用壓縮隧道
pg_dump -C dbname | bzip2 | ssh [email protected] "bunzip2 | psql dbname"
或
pg_dump -C dbname | ssh -C [email protected] "psql dbname"
但這種解決方案還需要在兩端得到一個會話。
pg_dump the_db_name > the_backup.sql
然後複製備份到你的開發服務器,恢復使用:
psql the_new_dev_db < the_backup.sql
有人告訴我,這可能是有問題的修改一般使用類似的腳本? – 2009-08-06 09:26:41
@rmbarnes:如果有問題 - 他們必須修復。如果沒有詳細瞭解這個「某個人」做了什麼 - 沒有人可以確認也不會駁回這一說法。 – 2009-08-06 10:06:57
在pg_dump中使用--no-owner標誌。這跳過了這個問題,這篇文章的第一次編輯使用它 - 但後來我認爲你可能需要更精確的原始數據庫保真度。 – unmounted 2009-08-06 17:05:43
使用pg_dump,後來psql或pg_restore - 這取決於您是否選擇-FP或-Fc選項pg_dump的。用法
例子:
ssh production
pg_dump -C -Fp -f dump.sql -U postgres some_database_name
scp dump.sql development:
rm dump.sql
ssh development
psql -U postgres -f dump.sql
我掙扎了很多,最終的方法,讓我使其與軌道4的工作是:
您的舊服務器上
sudo su - postgres
pg_dump -c --inserts old_db_name > dump.sql
我不得不使用Postgres的Linux用戶創建轉儲。還必須使用-c強制在新服務器上創建數據庫。 --inserts告訴它使用INSERT()語法,否則不會爲我工作:(
然後,在新服務器上,的simpy:
sudo su - postgres
psql new_database_name < dump.sql
傳輸服務器之間的dump.sql文件我只是使用「貓」來打印內容,而不是「nano」來重新創建內容副本。
另外,我在兩個數據庫上使用的角色不同,所以我必須找到 - 替換所有者在轉儲中的名稱。
pg_basebackup
似乎是th現在做這個更好的方法,特別是對於大型數據庫。
運行帶有數據庫名稱的此命令,要備份數據庫的轉儲。
pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
eg. pg_dump -U postgres mydbname -f mydbnamedump.sql
現在scp這個轉儲文件到您想要複製數據庫的遠程機器上。
eg. scp mydbnamedump.sql [email protected]:~/some/folder/
在遠程機器上運行〜/ some /文件夾中的以下命令來恢復數據庫。
psql -U {user-name} -d {desintation_db}-f {dumpfilename.sql}
eg. psql -U postgres -d mynewdb -f mydbnamedump.sql
如果你正在尋找的版本之間進行遷移(例如,你更新的Postgres,並運行在localhost 9.1:5432和9.3在本地主機上運行:5434),你可以運行:
pg_dumpall -p 5432 -U myuser91 | psql -U myuser94 -d postgres -p 5434
時退房migration docs。
我被多次詢問(myuser91/postgres)-password,有沒有辦法讓我只需輸入一次密碼? – 2017-12-15 10:50:29
@MartinWeber根據此文檔創建一個pgpass文件https://www.postgresql.org/docs/9.4/static/libpq-pgpass.html – 2017-12-21 04:06:30
讓我分享一個Linux shell腳本從一個服務器複製你的表中的數據到另一個PostgreSQL服務器。
Reference taken from this blog:
的Linux的Bash shell腳本對PostgreSQL服務器之間的數據遷移:
#!/bin/bash
psql \
-X \
-U user_name \
-h host_name1 \
-d database_name \
-c "\\copy tbl_Students to stdout" \
| \
psql \
-X \
-U user_name \
-h host_name2 \
-d database_name \
-c "\\copy tbl_Students from stdin"
我只是遷移數據;請在目標/第二個數據庫服務器上創建一個空白表。
這是一個實用程序腳本。導致無論是轉儲或恢復權限問題,當它擊中觸發死 - 而且,你可以通過增加對HOST_NAME,數據庫名稱,表名和參數等
- 1. 將MySql數據庫從一臺服務器複製到另一臺服務器
- 2. 將SQL Server Express數據庫複製到另一臺服務器
- 3. 將Azure Sql數據庫複製到另一臺服務器
- 4. Sql數據庫從一臺服務器複製到另一臺服務器
- 5. 將SQL服務器數據庫表從一臺服務器複製到另一臺服務器
- 6. 如何數據庫表從一個數據庫服務器複製到另一臺數據庫服務器
- 7. 使用c將數據庫從一臺服務器複製到另一臺服務器#
- 8. 如何在PHP中將數據庫從一臺服務器複製到另一臺服務器?
- 9. SQL Server 2005:如何將數據庫從一臺服務器複製到另一臺服務器(手動/編程)
- 10. 在.NET中將整個數據庫從一臺服務器複製到另一臺服務器
- 11. 將mysql數據庫從一臺服務器複製到另一臺服務器PHP cron Job自動化
- 12. 將MySQL數據庫從一臺服務器導入到另一臺服務器
- 13. 將數據庫從一臺服務器轉移到另一臺服務器
- 14. 複製/移動所有數據庫從一臺服務器到另一臺mysql
- 15. 將數據庫複製到另一個服務器上
- 16. 將PostgreSQL數據庫複製到另一個數據庫中
- 17. 如何將整個數據庫複製到另一臺服務器上?
- 18. SQL Server 2005,如何將數據庫圖複製到另一臺服務器
- 19. 將文件從一臺服務器複製到另一臺
- 20. 將打印機從一臺服務器複製到另一臺
- 21. 將Java文件從一臺服務器複製到另一臺
- 22. 將工作流從一臺服務器複製到另一臺
- 23. 將表從一臺phpMyAdmin服務器複製到另一臺
- 24. 將json文件從一臺服務器複製到另一臺服務器
- 25. 將圖像從一臺服務器複製到另一臺服務器上PHP
- 26. 在兩臺PostgreSQL服務器之間複製數據庫
- 27. 將整個數據庫複製到另一個服務器數據庫
- 28. 如何將文檔庫/庫從一臺Sharepoint服務器複製到另一臺Sharepoint服務器
- 29. 將數據庫從一臺計算機複製到另一臺
- 30. 從一臺服務器移動MySQL數據庫到另一臺服務器
有沒有需要中間文件 - 你可以使用壓縮的SSH隧道或者簡單地使用管道:pg_dump | bzip2 | ssh「bunzip2 | pg_restore」 – Kornel 2009-08-06 12:46:17
如果您使用bzip2,請關閉ssh壓縮以加快傳輸速度! – lzap 2012-06-19 09:34:08
命令ssh默認已禁用壓縮。在使用ssh壓縮的例子中,我沒有使用bzip2,當使用bzip2時,我沒有使用ssh壓縮。 – Ferran 2012-06-19 16:07:44