一个简单的shell脚本-实现PostgresQL的自动备份和还原
一个简单的shell脚本-实现PostgresQL的自动备份和还原
这个脚本是运用postgresQL提供的命令,从远端服务器备份数据库的完整资料,然后在本地恢复。
在运行脚本之前,如果远端数据库系统需要密码才能登陆,为了命令能完整执行,需要做在本地新建密码文件。
新建密码文件
/home/postgres/.pgpass
内容格式如下:
hostname:port:dbname:username:password
例如:
10.6.159.154:5445:edb:admin:admin
修改密码文件权限
chmod 600 .pgpass
这样在本地运行脚本备份154的数据库时,就不用手动输入密码。
新建数据库用户admin,并输入密码admin
用edb的默认超级管理员用户(enterprisedb)登陆(可以使用命令:su enterprisedb),进入edb安装目录的bin目录下,输入如下命令:
./createuser -P -s -e tamadmin
输入密码:tamadmin
这里默认数据库服务器是本地,端口为默认的5444。
运行shell脚本,进入脚本所在目录,输入如下命令:
sh edb-dump.sh
Shell代码
#!/bin/sh
#脚本用途
#从远端数据库服务器(10.6.159.154)上备份数据库,然后在本地还原
export POSTGRESPATH=/opt/app/PostgresPlus/9.0AS/bin
export PGPASSFILE=/home/postgres/.pgpass
echo "backup database start...."
$POSTGRESPATH/pg_dump -h 10.6.159.154 -p 5445 -U admin edb | gzip > '/opt/app/edb.dmp'
echo "backup database finished!"
echo "drop database edb start...."
export PGPASSWORD=tamadmin
$POSTGRESPATH/dropdb -U admin edb
echo "drop database edb end!"
echo "create database edb start...."
$POSTGRESPATH/createdb -U admin edb
echo "create database edb end!"
gunzip -c '/opt/app/edb.dmp' | $POSTGRESPATH/psql edb -p 5444 -U admin
rm -f /opt/app/edb.dmp
echo "restore database finished!"
运行脚本前关闭所有对需要还原的数据库的连接。
这里默认edb的安装路径是/opt/app/下,若edb安装路径不是此目录,脚本不能正确执行,需要修改脚本中POSTGRESPATH的值
运行脚本是要以root用户登陆系统。
在运行脚本时,会删除edb数据库,然后恢复到154上edb数据库的状态,所以在运行脚本时,请确保运行脚本的服务器上edb数据库下没有再用的schema。