1. 環(huán)境
OS版本:centos
數(shù)據(jù)庫版本:postgreSql 9.6+ 所有版本
2. 備份數(shù)據(jù)庫
進入postgreSql安裝目錄的bin文件夾下,使用pg_dump工具進行備份老赤。
a. 備份整個數(shù)據(jù)庫
# cd /usr/pgsql-14/bin
# ./pg_dump -h 192.168.1.16 -p 5432 -U sa -O -W -d mydb -f ~/mydb_20220601.sql
b. 備份指定模式下的數(shù)據(jù)
# ./pg_dump -h 192.168.1.16 -p 5432 -U sa -O -W -d mydb -n schema1 -f ~/mydb_20220601.sql
c. 備份指定的表
//導(dǎo)出表結(jié)構(gòu)和數(shù)據(jù)
# ./pg_dump -h 192.168.1.16 -p 5432 -U sa -O -d mydb -t schema1.t_table1 -f table1.sql
//只導(dǎo)出數(shù)據(jù)
# ./pg_dump -h 192.168.1.16 -p 5432 -U sa -O -a -d mydb -t schema1.table1 -f table1.sql
//表名存在大小寫(包括全大寫)的情況
# ./pg_dump -h 192.168.1.16 -p 5432 -U sa -O -a -d mydb -t schema1.\"t_Table1\" -f table1.sql
d. 參數(shù)詳情
// -h: 數(shù)據(jù)庫IP(192.168.1.16)
// -p: 數(shù)據(jù)庫端口(5432)
// -U: 用戶名(sa)
// -O: 導(dǎo)出文件不指定owner(無值)
// -W: 需要輸入密碼(無值书聚。貌似不添加該項仍然需要輸入密碼)
// -a: 只導(dǎo)出數(shù)據(jù)(無值刽肠。如果要導(dǎo)出建表語句等扭屁,不要設(shè)置該選項)
// -d: 數(shù)據(jù)庫名(mydb)
// -n: 模式名(schema1均牢。不添加該項則表示所有模式都備份)
// -f: 導(dǎo)出文件路徑和名稱(~/mydb_20220601.sql)
// -t: 表名(schema1.t_web堪旧。如果不輸入模式名削葱,一般默認模式為public)
3. 恢復(fù)數(shù)據(jù)庫
進入postgreSql安裝目錄的bin文件夾下,使用psql工具進行數(shù)據(jù)恢復(fù)淳梦。
a. 如果恢復(fù)數(shù)據(jù)存在模式改變(不存在則忽略此步驟)
修改備份文件析砸,指定新模式名和所屬用戶。
打開mydb_20220601.sql 爆袍,找到以下幾行首繁,將模式schema1和用戶sa分別修改成新的模式名和用戶名。如果導(dǎo)出的時候添加了-O選項陨囊,則備份文件里面沒有OWNER弦疮。
CREATE SCHEMA schema1 ;
ALTER SCHEMA schema1 OWNER TO sa;
SET search_path = schema1 , pg_catalog;
b. 導(dǎo)入備份文件
# ./psql -h 192.168.1.17 -p 5432 -U sa2 -d mydb2 -W -f ~/mydb_20220601.sql
c. 參數(shù)詳情
參考上文pg_dump。