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

本地验证脚本成功。

相关推荐