Linux下Oracle的本地和异地备份
客户服务器环境:rhel-server-5.4-x86_64+Oracle10g
异地备份服务器环境:windows server 2008
网络环境:正式服务器在外网,异地备份服务器在内网(无法映射到外网)
要求:在本地服务器、异地服务器上需要每天对网站工程和数据库进行备份,需要保留前5天的备份
方案1:在windows server 2008 安装serv-u 等软件,将Linux服务器中备份的工程包和数据库压缩包上传(推送)至异地备份服务器,但异地服务器是内网且无法映射到外网,无法搭建FTP服务器,所以该方案不可行。
方案2:在Linux服务器上搭建FTP服务器,异地备份服务器通过flashfxp等软件进行定时download
在Linux上安装FTP包
[root@yinyong ~]# rpm -ivh ftp-0.17-35.el5.i386.rpm
warning: ftp-0.17-35.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:ftp ########################################### [100%]
[root@yinyong ~]# service vsftpd start
vsftpd: unrecognized service
[root@yinyong ~]# vi /etc/xinetd.d/gssftp
# default: off
# description: The kerberized FTP server accepts FTP connections \
# that can be authenticated with Kerberos 5.
service ftp
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/kerberos/sbin/ftpd
server_args = -l
log_on_failure += USERID
disable = no
}
[root@yinyong ~]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@yinyong ~]# netstat -tnl
tcp 0 0 0.0.0.0:21 0.0.0.0:* LIST
vi /etc/xinetd.d/gssftp 将disable=yes改成no,然后打开ftp服务
把server_args = -l -a 改成 server_args = -l 把 -a 去掉,这样系统的用户才有权限用ftp登陆
然后启动FTP服务,在这里我用的是service xinetd restart ,用service vsftpd restart报vsftpd: unrecognized service,不知道为什么。21端口启动了,我也测试了FTP能用root登录。
编辑网站工程包,数据库备份及删除文件等脚本:db_back.sh ,web_back.sh,clear.sh
[root@yinyong /]# mkdir -p /bak/temp //创建数据库、日志等备份路径
[root@yinyong /]# mkdir -p /bak/db_bak //创建数据库本地备份路径
[root@yinyong /]# mkdir -p /var/ftp/pub //创建异地备份数据库存放路径
[root@yinyong ~]# vi /home/oracle/db_back.sh
su - oracle "-c exp hbskjt_0113/password file=/bak/temp/hbskjt_db.$(date +%Y%m%d).dmp owner=hbskjt0113 log=/bak/temp/hbskjt_db.$(date +%Y%m%d).log"
cd /bak/temp
tar zcf /bak/db_bak/hbskjt_db$(date +%Y%m%d).tar.gz hbskjt_db.$(date +%Y%m%d).* //数据库和日志一起打包本地备份
tar zcf /var/ftp/pub/hbskjt_db$(date +%Y%m%d).tar.gz hbskjt_db.$(date +%Y%m%d).*//数据库和日志一起打包异地备份
[root@yinyong oracle]# chmod 777 db_back.sh
[root@yinyong oracle]# ./db_back.sh
[root@yinyong db_bak]# ls
hbskjt_db20120911.tar.gz
[root@yinyong pub]# ls
hbskjt_db20120911.tar.gz
本地验证脚本成功。