⼀个简单的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
#!/bin/sh
#脚本⽤途
#从远端数据库服务器(10.6.159.154)上备份数据库,然后在本地还原
export POSTGRESPATH=/opt/app/PostgresPlus/9.0AS/bin
export PGPASSFILE=/home/postgres/.pgpass
echo "backup "
$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 "
export PGPASSWORD=tamadmin
$POSTGRESPATH/dropdb -U admin edb
echo "drop database edb end!"
echo "create database "
shell最简单脚本$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。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。