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

记一次linux下oracle的本地和异地备份


记一次linux下oracle的本地和异地备份
 
客户服务器环境:rhel-server-5.4-x86_64+oracle10g
异地备份服务器环境:windows server 2008 
网络环境:正式服务器在外网,异地备份服务器在内网(无法映射到外网)
  www.zzzyk.com  
要求:在本地服务器、异地服务器上需要每天对网站工程和数据库进行备份,需要
保留前5天的备份
方案1:在windows server 2008 安装serv-u 等软件,将Linux服务器中备份的工程
包和数据库压缩包上传(推送)至异地备份服务器,但异地服务器是内网且无法映
射到外网,无法搭建FTP服务器,所以该方案不可行。
  www.zzzyk.com  
方案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登录。
  www.zzzyk.com  
编辑网站工程包,数据库备份及删除文件等脚本: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
本地验证脚本成功。
 编写web_back.sh脚本
 
[root@yinyong /]# mkdir -p /bak/web_bak //创建备份路径  
工程路径在/home/tomcat/webapps/oa 下  
[root@yinyong ~]# vi /home/oracle/db_web.sh  
cd /home/tomcat/webapps  
tar zcf /bak/web_bak/oa_$(date +%Y%m%d).tar.gz oa/ //本地工程备份存放路径  
tar zcf /var/ftp/pub/oa_$(date +%Y%m%d).tar.gz oa/ //异地工程备份存放路径  
[root@yinyong oracle]# chmod 777 db_web.sh  
[root@yinyong oracle]# ./db_web.sh  
[root@yinyong web_bak]# ls  
oa_20120911.tar.gz  
本地验证脚本,备份成功  
由于是做的每天备份,服务器的磁盘再大也会有爆的一天,所以需求删除以前
的备份,只保留近5天的备份,这就需要一个删除脚本clear.sh
 
[root@yinyong ~]# vi /home/oracle/clear.sh  
rm -rf /bak/web_bak/oa_$(date -d -5day +"%Y%m%d")*.gz    //本地备份保留
rm -rf /bak/temp/*.*   //该路径下是dmp、log文件,已经打包压缩备份,应每天删除
rm -rf /bak/db_bak/hbskjt_db$(date -d -5day +"%Y%m%d")*.gz   
rm -rf /var/ftp/pub/hbskjt_db$(date -d -1day +"%Y%m%d")*.gz   //异地备份
只保留一天,确保每天下载的是当天最新的数据,解决覆盖文件的问题
rm -rf /var/ftp/pub/oa_$(date -d -1day +"%Y%m%d")*.gz   
[root@yinyong oracle]# chmod 777 clear.sh 
编辑cron
 
[root@yinyong ~]# crontab -e  
 
0 1 * * * /home/oracle/db_back.sh //凌晨一点做数据库备份  
0 2 * * * /home/oracle/db_web.sh //凌晨二点做网站备份  
0 3 * * * /home/oracle/clear.sh //凌晨三点删除以前的备份  
目前本地服务器的备份做好了,现在需要配置windows server 2008 异地服务器。
用的是FlashFXPliehuo4.2.6软件
配置登录参数:
配置异地服务器存放路径:d:\tet\pub
 Linux服务器备份路径:/var/ftp/pub:
点击右键“队列”
会生成下面的配置文件:
右键另存为*fqf文件。
点击软件 工具--计划,创建新的计划任务,“队列文件”就选择刚才保存的*fqf文件
配置计划任务:
这样就可以自动下载了,在Linux服务器上做异地备份的目录,最好做成一天
一删除,这样每天下载的内容就是最新的,而不用考虑重复下载和覆盖以前
的工程、数据库等。这个计划任务最好是设置在凌晨,减少因为下载带来
的网络负荷问题。
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,