PostgreSQL数据库备份还原脚本

本文对数据库进行的操作主要用到的PG自带pg_dumpall、pg_dumppsql这几个命令

备份还原过程:

1:备份全局对象

2: 备份某一个数据库

3:还原全局对象

4:还原备份的数据库

备份详细过程:    

第一步,备份所有公共对象,包括编码用户,权限等

pg_dumpall –h 192.168.xx.xx –U adminuser –p 5432 –g –f xxx/global.sql

   第二步,备份某一个数据库

   pg_dump –h 192.168.xx.xx –U adminuser –p 5432 –d xxxdb  –C  –f xxx/xxxdb.sql

  “-C”选项,可以将建库的语句也输出到文件中;如果手动建库,则需要去除该选项

还原详细过程:

还原数据的时候,根据备份的过程,先还原全局对象,再还原数据库

  首先恢复全局的信息,包括用户,编码等:

    psql –h 192.168.xx.xx –U adminuser –p 5432 –f xxx/global.sql

  其次恢复某数据库

    psql –h 192.168.xx.xx –U adminuser –p 5432 –f xxx/xxxdb.sql

    我在上面备份pg_dump中写了”-C”,它会自动建库,如果没有写这个选项,要在psql中写-d xxxdb


执行脚本的必要条件

    

1. 将备份、还原脚本backup.shrestore.sh放进linux的某一目录当中

2. 脚本linux系统下运行前增加脚本backup.shrestore.sh的运行权限

3. 根据实际环境修改脚本中的数据库连接参数

export PGPASSWORD="postgres"      --数据库用户密码

export POSTGRESPATH=/usr/lib/postgresql/9.5/bin   --pg_dump等命令在的bin目录

HOST_NAME="192.168.xxx.xxx"     --要备份的数据源IP

ADMIN_USER="xxx"       --登录用户名

BACKUP_DB="xxx"          --要备份的数据库

脚本运行

1. 在linux下进入到脚本所在的目录

2. 先运行备份脚本backup.sh,然后到备份所指定目录下查看备份文件,如果问题执行还原脚本restore.sh

还原脚本restore.sh执行完成后对照生成的库/用户/角色/schema//数据完成验证

backup.sh  备份脚本

#!/bin/sh
###
###
###


export PGPASSWORD="备份登录用户密码"
export POSTGRESPATH=/usr/lib/postgresql/9.5/bin
HOST_NAME="所处备份数据库IP"
ADMIN_USER="备份登录用户名"
BACKUP_DB="要备份数据库"


echo "backup database start......"




#备份全局对象
$POSTGRESPATH/pg_dumpall -h $HOST_NAME -U $ADMIN_USER -p 5432 -g -f /home/global.sql


#备份某一个数据库
$POSTGRESPATH/pg_dump -h $HOST_NAME -U $ADMIN_USER -p 5432 -d $BACKUP_DB -C -f /home/$BACKUP_DB.sql


echo "backup database end....."


restore.sh  还原脚本

#!/bin/sh
###
###
###


export PGPASSWORD="还原机登录密码"
export POSTGRESPATH=/usr/lib/postgresql/9.5/bin


HOST_NAME="还原机IP"
ADMIN_USER="还原机登录用户"
RESTORE_DB="所还原库"


echo "restore database start......"


#还原全局对象
$POSTGRESPATH/psql -h $HOST_NAME -U $ADMIN_USER -p 5432 -d postgres -f /home/jack/global.sql


#还原数据库
$POSTGRESPATH/psql -h $HOST_NAME -U $ADMIN_USER -p 5432 -d postgres -f /home/jack/$RESTORE_DB.sql


echo "restore database end......"

你可能感兴趣的:(postgresql)