pg_dump 是一個用於備份PostgreSQL資料庫的工具. 該工具生成的轉儲格式可以分為兩種, 腳本 : 其中腳本格式是包含許多SQL命令的純文本格式 (常用) 歸檔文件: 需要重建資料庫就必須和pg_restore工具一起使用 下麵按照這兩種方式進行備份恢復操作。 環境簡介: 操作對象:數據
pg_dump 是一個用於備份PostgreSQL資料庫的工具. 該工具生成的轉儲格式可以分為兩種, 腳本 : 其中腳本格式是包含許多SQL命令的純文本格式 (常用) 歸檔文件: 需要重建資料庫就必須和pg_restore工具一起使用 下麵按照這兩種方式進行備份恢復操作。 環境簡介:
操作對象:資料庫為xzfb; 表lottu,lottu01
[postgres@oracle2 ~]$ psql -U lottu -d xzfb psql (9.5.0) Type "help" for help. xzfb=> \d+ List of relations Schema | Name | Type | Owner | Size | Description --------+---------+-------+-------+------------+------------- public | lottu | table | lottu | 8192 bytes | public | lottu01 | table | lottu | 8192 bytes | (2 rows) xzfb=> select * from lottu; v_id | v_name ------+--------- 1001 | lottu 1002 | rax 1003 | vincent 1003 | vincent (4 rows) xzfb=> select * from lottu01; id ------ 1001 1002 (2 rows) 1. 生成腳本方式來備份,恢復 備份整個資料庫xzfb
先介紹-c參數; 相當於是對對象先刪除;後創建的功效。
恢復整個資料庫xzfb ;由於備份的是腳本;可以直接psql執行即可。
[postgres@oracle2 ~]$ dropdb -U postgres xzfb [postgres@oracle2 ~]$ createdb -U postgres -O lottu -D lottu -e xzfb CREATE DATABASE xzfb OWNER lottu TABLESPACE lottu; [postgres@oracle2 ~]$ psql -U lottu -d xzfb psql (9.5.0) Type "help" for help. xzfb=> \d No relations found.從這裡可以看出xzfb庫已經刪除了已創建;裡面是沒有表關聯現在執行 psql -U lottu -d xzfb < ./backup/xzfb.sql 進行恢復
[postgres@oracle2 backup]$ psql -U lottu -d xzfb < xzfb.sql進入資料庫可以看到數據已經回來了
[postgres@oracle2 backup]$ psql -U lottu -d xzfb psql (9.5.0) Type "help" for help. xzfb=> \d List of relations Schema | Name | Type | Owner --------+---------+-------+------- public | lottu | table | lottu public | lottu01 | table | lottu (2 rows) xzfb=> select * from lottu; v_id | v_name ------+--------- 1001 | lottu 1002 | rax 1003 | vincent 1003 | vincent (4 rows) 對 表的數據也可以這樣恢復;這裡不簡介了;大家備份的腳本可以查看下;裡面就是在psql能運行的腳本。 2. 備份格式為 歸檔文件的備份,恢復
- 使用dump格式備份和恢復
參數-F: p(plain): 純文本格式的SQL腳本文件(預設)。c(custom): 輸出適合於pg_restore的自定義歸檔格式。 這是最靈活的格式,它允許對裝載的數據和對象定義進行重新排列。這個格式預設的時候是壓縮的。t(tar): 輸出適合於 pg_restore的tar歸檔文件。使用這個歸檔允許在恢複數據庫時重新排序和/或把資料庫對象排除在外。同時也可以在恢復的時候限制對哪些數據進行恢復。
[postgres@oracle2 ~]$ pg_dump -U postgres -Fc xzfb > ./backup/xzfb02.dump --備份 [postgres@oracle2 ~]$ dropdb -U postgres xzfb --刪庫操作 [postgres@oracle2 ~]$ createdb -U postgres -O lottu -D lottu -e xzfb --建庫操作 [postgres@oracle2 ~]$ pg_restore -U postgres -d xzfb ./backup/xzfb02.dump > ./backup/dump01.log 2>&1 --恢復操作 [postgres@oracle2 ~]$ psql -U lottu -d xzfb psql (9.5.0) Type "help" for help. xzfb=> \d List of relations Schema | Name | Type | Owner --------+---------+-------+------- public | lottu | table | lottu public | lottu01 | table | lottu (2 rows) xzfb=> select * from lottu; v_id | v_name ------+--------- 1001 | lottu 1002 | rax 1003 | vincent 1003 | vincent (4 rows) 恢復OK;恢復詳細步驟看./backup/dump01.log內容;- 使用tar格式備份和恢復