记一次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包

 
 
  1. [root@yinyong ~]# rpm -ivh ftp-0.17-35.el5.i386.rpm   
  2. warning: ftp-0.17-35.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186  
  3. Preparing...                ########################################### [100%]  
  4.    1:ftp                    ########################################### [100%]  
  5. [root@yinyong ~]# service vsftpd start  
  6. vsftpd: unrecognized service  
  7. [root@yinyong ~]# vi /etc/xinetd.d/gssftp   
  8. defaultoff 
  9. # description: The kerberized FTP server accepts FTP connections \  
  10. #              that can be authenticated with Kerberos 5.  
  11. service ftp  
  12. {  
  13.         flags           = REUSE  
  14.         socket_type     = stream  
  15.         wait            = no 
  16.         user            = root  
  17.         server          = /usr/kerberos/sbin/ftpd  
  18.         server_args     = -l   
  19.         log_on_failure  += USERID  
  20.         disable         = no 
  21. }  
  22. [root@yinyong ~]# service xinetd restart  
  23. Stopping xinetd:                                           [  OK  ]  
  24. Starting xinetd:                                           [  OK  ]  
  25. [root@yinyong ~]# netstat -tnl  
  26. tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LIST  
  27.    

 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

 
 
  1. [root@yinyong /]# mkdir -p /bak/temp     //创建数据库、日志等备份路径  
  2. [root@yinyong /]# mkdir -p /bak/db_bak   //创建数据库本地备份路径  
  3. [root@yinyong /]# mkdir -p /var/ftp/pub  //创建异地备份数据库存放路径  
  4. [root@yinyong ~]# vi /home/oracle/db_back.sh   
  5. 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" 
  6. cd /bak/temp  
  7. tar zcf /bak/db_bak/hbskjt_db$(date +%Y%m%d).tar.gz hbskjt_db.$(date +%Y%m%d).* //数据库和日志一起打包本地备份 
  8. tar zcf /var/ftp/pub/hbskjt_db$(date +%Y%m%d).tar.gz hbskjt_db.$(date +%Y%m%d).*//数据库和日志一起打包异地备份
  9. [root@yinyong oracle]# chmod 777 db_back.sh
  10. [root@yinyong oracle]# ./db_back.sh
  11. [root@yinyong db_bak]# ls
    hbskjt_db20120911.tar.gz
  12. [root@yinyong pub]# ls
    hbskjt_db20120911.tar.gz
  13. 本地验证脚本成功。

 编写web_back.sh脚本

 
 
  1. [root@yinyong /]# mkdir -p /bak/web_bak //创建备份路径  
  2. 工程路径在/home/tomcat/webapps/oa 下  
  3. [root@yinyong ~]# vi /home/oracle/db_web.sh  
  4. cd /home/tomcat/webapps  
  5. tar zcf /bak/web_bak/oa_$(date +%Y%m%d).tar.gz oa/  //本地工程备份存放路径  
  6. tar zcf /var/ftp/pub/oa_$(date +%Y%m%d).tar.gz oa/ //异地工程备份存放路径  
  7. [root@yinyong oracle]# chmod 777 db_web.sh  
  8. [root@yinyong oracle]# ./db_web.sh  
  9. [root@yinyong web_bak]# ls  
  10. oa_20120911.tar.gz  
  11. 本地验证脚本,备份成功  

由于是做的每天备份,服务器的磁盘再大也会有爆的一天,所以需求删除以前的备份,只保留近5天的备份,这就需要一个删除脚本clear.sh

 
 
  1. [root@yinyong ~]# vi /home/oracle/clear.sh  
  2. rm -rf /bak/web_bak/oa_$(date -d -5day +"%Y%m%d")*.gz    //本地备份保留
  3. rm -rf /bak/temp/*.*   //该路径下是dmp、log文件,已经打包压缩备份,应每天删除
  4. rm -rf /bak/db_bak/hbskjt_db$(date -d -5day +"%Y%m%d")*.gz   
  5. rm -rf /var/ftp/pub/hbskjt_db$(date -d -1day +"%Y%m%d")*.gz   //异地备份只保留一天,确保每天下载的是当天最新的数据,解决覆盖文件的问题
  6. rm -rf /var/ftp/pub/oa_$(date -d -1day +"%Y%m%d")*.gz   
  7. [root@yinyong oracle]# chmod 777 clear.sh 

编辑cron

 
 
  1. [root@yinyong ~]# crontab -e  
  2.  
  3. 0 1 * * * /home/oracle/db_back.sh    //凌晨一点做数据库备份  
  4. 0 2 * * * /home/oracle/db_web.sh     //凌晨二点做网站备份  
  5. 0 3 * * * /home/oracle/clear.sh      //凌晨三点删除以前的备份  

目前本地服务器的备份做好了,现在需要配置windows server 2008 异地服务器。

用的是FlashFXPliehuo4.2.6软件

配置登录参数:

配置异地服务器存放路径:d:\tet\pub

 Linux服务器备份路径:/var/ftp/pub:

点击右键“队列”

会生成下面的配置文件:

右键另存为*fqf文件。

点击软件 工具--计划,创建新的计划任务,“队列文件”就选择刚才保存的*fqf文件

配置计划任务:

这样就可以自动下载了,在Linux服务器上做异地备份的目录,最好做成一天一删除,这样每天下载的内容就是最新的,而不用考虑重复下载和覆盖以前的工程、数据库等。这个计划任务最好是设置在凌晨,减少因为下载带来的网络负荷问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值