当前位置:数据库 > SQLServer >>

一个简单的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。
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,