1. 环境
OS版本:centos
数据库版本:postgreSql 9.6+ 所有版本
2. 备份数据库
进入postgreSql安装目录的bin文件夹下,使用pg_dump工具进行备份。
a. 备份整个数据库
# 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. 备份指定模式下的数据
# ./pg_dump -h 192.168.1.16 -p 5432 -U sa -O -W -d mydb -n schema1 -f ~/mydb_20220601.sql
c. 备份指定的表
//导出表结构和数据
# ./pg_dump -h 192.168.1.16 -p 5432 -U sa -O -d mydb -t schema1.t_table1 -f table1.sql
//只导出数据
# ./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. 参数详情
// -h: 数据库IP(192.168.1.16)
// -p: 数据库端口(5432)
// -U: 用户名(sa)
// -O: 导出文件不指定owner(无值)
// -W: 需要输入密码(无值。貌似不添加该项仍然需要输入密码)
// -a: 只导出数据(无值。如果要导出建表语句等,不要设置该选项)
// -d: 数据库名(mydb)
// -n: 模式名(schema1。不添加该项则表示所有模式都备份)
// -f: 导出文件路径和名称(~/mydb_20220601.sql)
// -t: 表名(schema1.t_web。如果不输入模式名,一般默认模式为public)
3. 恢复数据库
进入postgreSql安装目录的bin文件夹下,使用psql工具进行数据恢复。
a. 如果恢复数据存在模式改变(不存在则忽略此步骤)
修改备份文件,指定新模式名和所属用户。
打开mydb_20220601.sql ,找到以下几行,将模式schema1和用户sa分别修改成新的模式名和用户名。如果导出的时候添加了-O选项,则备份文件里面没有OWNER。
CREATE SCHEMA schema1 ;
ALTER SCHEMA schema1 OWNER TO sa;
SET search_path = schema1 , pg_catalog;
b. 导入备份文件
# ./psql -h 192.168.1.17 -p 5432 -U sa2 -d mydb2 -W -f ~/mydb_20220601.sql
c. 参数详情
参考上文pg_dump。
网友评论