瀚高数据库备份恢复过程


参数部分

  • 部分重要事项说明
1. 环境变量中可以设置 PGPASSWORD的环境变量,可以在进行psql等命令时不需要输入密码.
2. 对应的如果是进行rsync的文件传输可以使用RSYNC_PASSWORD的环境变量进行免密处理.
3. 如果创建大写的用户名,架构,数据库需要使用双引号扩起来才可以,不然默认进行小写对象的创建.
4. 使用psql 转储为sql文件后, pg_dump备份时不需要在database 下面创建 schema , psql创建的SQL会自动创建schema
5. 进行恢复时建议使用 sysdba (pg里面是 postgres 或者是企业版的highgo用户) 进行恢复, 因为如果sql文件中如果有函数的创建操作. 
6. 如果备份恢复进行了属主变化的话可以使用 sed命令修改 转储的sql文件. 

备份恢复的过程说明

  • 备份恢复过程
  • Only命令版本
pg_dump -h 127.0.0.1  -U DB2103HIGHGO  -p 5866  -F c -f  /db2103highgo.dmp   DB2103HIGHGO
psql highgo  sysdba 
create user db2103highgo  password 'Yourpassword';
create database db2103highgo OWNER db2103highgo; 
\q
psql db2103highgo   sysdba 
update pg_cast set castcontext = 'i' where castsource = 'integer'::regtype and casttarget = 'boolean'::regtype;
\q
sed -i 's/DB2103HIGHGO/db2103highgo/g' /db2103highgo.dmp 
pg_restore -U sysdba -d db2103highgo /db2103highgo.dmp 

备份恢复的过程说明

  • 具体命令详解
# 数据库备份操作
pg_dump -h 127.0.0.1  -U DB2103HIGHGO  -p 5866  -F c -f  /db2103highgo.dmp   DB2103HIGHGO

#创建用户
#注意如果创建大写名称的话 需要用大写加括号括起来.
#注意如果是pg的话需要使用 supseruser 等用户权限来描述, 安全版取消了这个role
create user db2103highgo  password 'Yourpassword';

#创建数据库
#注意这里是瀚高安全版的设置, 
create database db2103highgo OWNER db2103highgo; 

# 创建架构  pg_dump 恢复的话 不需要这个命令了. 
# 注意 pg数据库的架构和oracle的架构有所区别.
# Oracle里面基本用create database 时就会生产架构了. 但是PG里面的database更像是Oralce19c里面的pdb的概念
# PG 里面的每一个database里面的schema 更像时oracle PDB里面单独创建的 database
# 注意 如果手工进行创建 需要使用刚才创建的数据库和刚才创建的用户. 

psql  db2103highgo    db2103highgo  
create schema db2103highgo;

# 修改字段映射
# 注意此处是瀚高安全版与PG数据库的一个区别,需要使用当前数据库,并且使用 sysdba的权限进行创建.
psql db2103highgo   sysdba 
update pg_cast set castcontext = 'i' where castsource = 'integer'::regtype and casttarget = 'boolean'::regtype; 

# 注意需要使用 sed 命令修改 sql 脚本里面的属主信息
# 注意这个场景需要修改大小写
sed -i 's/DB2103HIGHGO/db2103highgo/g' db2103highgo.dmp 

# 执行恢复操作. 
# 使用 sysdba用户.进行恢复.
pg_restore -U sysdba -d db2103highgo /db2103highgo.dmp