本文对数据库进行的操作主要用到的是PG自带的pg_dumpall、pg_dump、psql这几个命令
备份还原过程:
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.sh和restore.sh放进linux下的某一目录当中
2. 脚本在linux系统下运行前增加脚本backup.sh和restore.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......"