postgresql備份與恢復資料庫
一、pg_dump含義
pg_dump 是一個用於備份 Postgresql 資料庫的實用程式。由 pg_dump 備份的轉儲檔案是完全一致的,因為轉儲是 pg_dump 開始執行時資料的快照。 pg_dump 不會阻止其他使用者訪問資料庫。如果普通使用者已被授予資料庫許可權,則可以執行 pg_dump 。 pg_dump 只能備份一個資料庫。 Pg_dumpall 用於備份整個叢集或備份叢集中所有資料庫共有的公共物件。
二、pg_dump檔案型別
轉儲檔案可以指令碼或存檔檔案格式匯出。
指令碼轉儲檔案是純文字檔案,其中包含將資料庫恢復到儲存時所處狀態所需的 SQL 命令。使用以此方式建立的指令碼;使用 psql 或其他工具執行生成的 sql 檔案將資料庫恢復到當前狀態就足夠了。必須先建立相關的資料庫,然後才能執行此命令,否則預設情況下將在 postgres 資料庫中建立物件。
如果不想手動建立資料庫,則必須使用 pg_dump 以存檔檔案格式,以自定義,目錄, tar方式來 建立備份。然而,像這種情況下,需要使用 pg_restore 工具來恢復資料。
三、pg_dump語法
pg_ dump [connection-option …] [option …] [dbname]
-h 引數指定要備份的資料庫的主機
-p 引數指定埠
-U 引數指定資料庫使用者
四、pg_dump備份與恢復
4.1 使用pg_dump備份與恢復資料庫
1、 備份資料庫
可以使用幾種不同的語法生成名為 zabbix 的資料庫的 SQL 轉儲檔案。
pg_dump zabbix > db.sql
pg_dump -h localhost -p 5432 -U postgres zabbix > /home/postgres/dump/db_data.sql
pg_dump -h localhost -p 5432 -U postgres zabbix -f /home/postgres/dump/db_data.sql
2、恢復 資料庫
可以將建立的轉儲檔案還原為另一個名為 zabbix 的資料庫。
psql -d zabbix -f /home/postgres/dump/db_zabbix_data.sql
psql -f /home/postgres/dump/db_zabbix_data.sql -d newzabbix -p 5432 -U postgres
4.2 、 pg_dump 自定義格式
使用以下命令以自定義檔案格式建立 zabbix 資料庫的轉儲。透過這種方式生成的備份檔案將比 sql 檔案小得多,因為在後臺使用 zlib 壓縮了該檔案。
pg_dump -Fc zabbix > /home/postgres/dump/zabbix_db.dump
從自定義檔案格式轉儲恢復資料庫
pg_restore -d test_zabbix /home/postgres/dump/zabbix_db.dump
4.3 pg_dump目錄格式
使用以下命令以目錄格式建立 zabbix 資料庫的轉儲。
pg_dump -Fd zabbix -f dumpdirectory
或使用並行方式備份
pg_dump -Fd zabbix -j 5 -f dumpdir
從目錄檔案恢復資料庫
pg_restore -Fd -l dumpdirectory
4.4、pg_dump tar格式備份
下面的命令以 tar 檔案格式建立 mydb 資料庫的轉儲檔案。
pg_dump -Ft zabbix> /home/postgres/dump/zabbix_db.tar
從tar檔案還原Postgres資料庫
pg_restore -Ft -d zabbix /home/postgres/dump/zabbix_db.tar
4.5、pg_dump指定表備份
1、備份指定的表
pg_dump -t table1 -d zabbix > /home/postgres/dump/table1.sql
2、備份名稱以tbl開頭的表
pg_dump -t 'tbl*' -d zabbix > /home/postgres/dump/tbl.sql
3、備份名稱以tbl開頭但不是tbl_mustafa的表
pg_dump -t 'tbl*' -T tbl_mustafa -d zabbix > /home/postgres/dump/tbl1.sql
4、備份名稱以East或West開頭並以gsm結尾的所有模式,並排除名稱包含test的所有模式
pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' zabbix >/home/postgres/dump/tbl2.sql
pg_dump -n '(east|west)*gsm' -N '*test*' zabbix > db.sql
5、匯出資料、不導表結構
pg_dump -a zabbix > /home/postgres/dump/tbl1.sql
pg_dump --data-only zabbix > /home/postgres/dump/tbl1.sql
4.6、pg_dump壓縮
以下命令用於透過 pg_dump 進行壓縮備份。
pg_dump zabbix | gzip -9 > zabbix.gz
4.7、pg_dump拆分
將轉儲輸出拆分為一定大小的多個檔案
pg_dump zabbix | split -b 1m – files
恢復拆分轉儲檔案
cat files* | psql zabbix
4.8、pg_dump ON_ERROR_STOP
預設 ; 如果還原時發生錯誤,則 psql 將忽略該錯誤並繼續執行。我們可以透過設定 ON_ERROR_STOP 變數來自定義這種情況。執行此命令後,程式碼將一直執行到發生錯誤的行,但後續行將不被處理。
psql --set zabbix < zabbix.sql
4.9、pg_dumpall備份
pg_dumpall 備份叢集的所有內容。 pg_dumpall 為給定叢集中的每個資料庫建立一個備份,併為叢集範圍的角色和表空間定義之類的資料建立備份。 使用 pg_dumpall 進行恢復時,始終需要超級使用者訪問許可權才能恢復角色和表空間資訊。 pg_dumpall 傳送命令來建立角色,表和空資料庫,然後為每個資料庫執行 pg_dump 。
備份全庫:
pg_dumpall > all_dbdata.sql
pg_dumpall -f all_dbdata.sql
恢復全庫:
psql postgres < all_dbdata.sql
psql -f all_dbdata.sql postgres
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2742419/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 備份和恢復postgreSQL資料庫SQL資料庫
- 備份與恢復:polardb資料庫備份與恢復資料庫
- PostgreSql資料庫的備份和恢復SQL資料庫
- Postgresql 備份與恢復SQL
- 【備份恢復】從備份恢復資料庫資料庫
- mongo資料庫備份與恢復Go資料庫
- 資料庫的備份與恢復資料庫
- Informix資料庫備份與恢復ORM資料庫
- rman資料庫全庫備份與恢復資料庫
- mysql的資料庫備份與恢復MySql資料庫
- oracle資料庫的備份與恢復Oracle資料庫
- 資料庫備份與恢復技術資料庫
- Postgresql 備份恢復SQL
- 資料庫備份與異機恢復——熱備份方式資料庫
- Oracle資料庫備份與恢復之三:OS備份/使用者管理的備份與恢復Oracle資料庫
- Oracle資料庫備份與恢復之RMANOracle資料庫
- 關閉資料庫的備份與恢復資料庫
- Oracle資料庫的備份與恢復(轉)Oracle資料庫
- 資料庫備份與恢復----第一課資料庫
- Oracle 資料庫的備份與恢復(轉)Oracle資料庫
- 【備份恢復】Oracle 資料備份與恢復微實踐Oracle
- 【備份恢復】noarchive模式下使用增量備份恢復資料庫Hive模式資料庫
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫
- Mysql資料備份與恢復MySql
- DB2的資料庫備份與恢復DB2資料庫
- ORACLE RAC資料庫的備份與恢復(6)Oracle資料庫
- ORACLE RAC資料庫的備份與恢復(5)Oracle資料庫
- ORACLE RAC資料庫的備份與恢復(4)Oracle資料庫
- ORACLE RAC資料庫的備份與恢復(3)Oracle資料庫
- ORACLE RAC資料庫的備份與恢復(2)Oracle資料庫
- ORACLE RAC資料庫的備份與恢復(1)Oracle資料庫
- 資料庫(表)的邏輯備份與恢復資料庫
- 達夢資料庫備份恢復資料庫
- 備份與恢復:Polardb資料庫資料基於時間點恢復資料庫
- 資料庫資料的恢復和備份資料庫
- Redis的資料備份與恢復Redis
- 課時7-備份與恢復----資料庫備份策略指令碼資料庫指令碼
- 淺談達夢資料庫的備份與恢復資料庫