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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 備份與恢復:polardb資料庫備份與恢復資料庫
- PostgreSql資料庫的備份和恢復SQL資料庫
- Postgresql 備份與恢復SQL
- 資料庫備份恢復資料庫
- 資料庫備份與恢復技術資料庫
- MySQL-19.資料庫備份與恢復MySql資料庫
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫
- 備份與恢復:Polardb資料庫資料基於時間點恢復資料庫
- Mysql資料備份與恢復MySql
- Linux下MySQL資料庫的備份與恢復LinuxMySql資料庫
- Mysql資料庫備份及恢復MySql資料庫
- 達夢資料庫備份恢復資料庫
- RabbitMQ如何備份與恢復資料MQ
- Dedecms資料庫恢復與備份的兩種方法資料庫
- 淺談達夢資料庫的備份與恢復資料庫
- Mongo 資料庫備份和恢復命令Go資料庫
- pg_dump 備份,恢復資料庫資料庫
- SqlServer資料庫恢復備份資料的方法SQLServer資料庫
- RAC備份恢復之Voting備份與恢復
- mysqldump使用方法(MySQL資料庫的備份與恢復)MySql資料庫
- vivo 資料庫備份恢復系統演化資料庫
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- PG-pg_dump備份/恢復資料庫資料庫
- PostGreSql12.6的備份恢復SQL
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- 如何在HarmonyOS對資料庫進行備份,恢復與加密資料庫加密
- 分散式文件儲存資料庫之MongoDB備份與恢復分散式資料庫MongoDB
- NoSQL 資料庫案例實戰 -- MongoDB資料備份、恢復SQL資料庫MongoDB
- RMAN備份恢復典型案例——資料庫卡頓資料庫
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- Jenkins備份與恢復Jenkins
- MySQL 備份與恢復MySql
- postgresql資料庫怎麼備份SQL資料庫
- Docker Swarm 進階:資料卷備份與恢復DockerSwarm
- Mysql備份與恢復(1)---物理備份MySql
- 時序資料庫InfluxDB之備份和恢復策略資料庫UX
- 時序資料庫 InfluxDB 之備份和恢復策略資料庫UX
- ClickHouse資料庫單機安裝及備份恢復資料庫