Dict.CN 在线词典, 英语学习, 在线翻译

都市淘沙者

荔枝FM Everyone can be host

统计

留言簿(23)

积分与排名

优秀学习网站

友情连接

阅读排行榜

评论排行榜

在linux中数据库实现每天自动备份数据及自动删除5天前备份数据


 原帖:在linux中数据库实现每天自动备份数据及自动删除5天前备份数据(常用)

1数据库每天自动备份数据需求
第一:每天自动备份当天的数据库的数据信息
第二:把当天备份的数据和日志一起打成.tar.gz包,这样会减少硬盘的容量。
第三:用FTP把当天的数据.tar.gz包上传到外面的服务器做备份。
第四:每天的数据日益增加,硬盘的容量有限。所以只保留前五天的数据备份,删除五天前的数据备份。

2
自动备份实现步骤(从数据库服务器1备份到服务器2)
2.1在数据库服务器1编写backup.sh文件
用安装Oracle数据库的用户(这里的用户为oracle)在数据库服务器的/home/databackup创建并编写backup.sh文件。该文件先定义Oracle的环境变量,然后导出当天的数据,并创建相关的日志,然后把当天的数据和日志打包成.tar.gz文件。
文件内容:(#为注释)

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#Oracle的字符集,Oracle数据库的中文字符集为AMERICAN_AMERICA.ZHS16GBK

export ORACLE_HOME=/oracle/product/10.2.0/db_1
#Oracle数据库的根目录
/oracle/product/10.2.0/db_1/bin/exp risenet56/1@ora10g file=risenet56`date +%Y%m%d`.dmp log=risenet56`date +%Y%m%d`.log
owner=risenet56

#导出当日的数据库的数据并写日志。如当为2008-1-16,数据文件为risenet5620080116.dmp,日志为risenet5620080116.log

tar -cf risenet56`date +%Y%m%d`.tar risenet56`date +%Y%m%d`.dmp risenet56`date +%Y%m%d`.log
#把数据文件和日志打包

gzip risenet56`date +%Y%m%d`.tar
#把tar包压缩成.tar.gz包

cat risenet56`date +%Y%m%d`.log | mail -s 'risenet56 Web Backup' mengzhaoliang@risesoft.net
#把当天日志发送到mengzhaoliang@risesoft.net邮箱

rm -f risenet56`date +%Y%m%d`.dmp
rm -f risenet56`date +%Y%m%d`.log
#删除备份.dmp文件和.log日志

mv risenet56`date +%Y%m%d`.tar.gz /home/databackup
#把当前目录的.tar.gz包移动到/home/databackup目录下

rm -f /home/databackup/risenet56`date -d -5day +%Y%m%d`.tar.gz
#删除/home/databackup/目录下前第5天的数据

2.2在数据库服务器1创建FTP服务的autoftp.sh文件
从数据库服务器1的当天备份数据用FTP上传到另一服务器2。在数据库服务器1的/home/databackup的目录下创建并编写autoftp.sh文件。

文件内容如下:

#!/bin/sh
ftp -i -v -n <<!
open ***.***.***.***
#
启动 FTP 连接服务器2
***.***.***.***为服务器2的ip地址


user risesoft ******
#risesoft
为用户名
******为密码


Binary
#以二进制传输

prompt off
lcd /home/databackup
#在数据库服务器1的目录

cd /home/risesoft/67OracleBackup
#在服务器2的目录

mput risenet56`date +%Y%m%d`.tar.gz
#上传数据

close
bye
!
--------------------------------------------------
2.3在数据库服务器1上给两个shell文件赋予权限

用oracle用户给backup.sh赋予相应的权限,启动一个终端,执行切换用户命令:su – oracle ,然后输入用户的密码。执行赋予权限命令:chmod +x /home/databackup/backup.sh
然后再执行命令:chomd +x /home/databackup/autoftp.sh

2.4在数据库服务器1中的crontab来定时执行shell用oracle用户启动一个终端,输入命令进行编写:crontab –e
内容如下:

30 19 * * * /home/databackup/backup.sh 2>&1
30
22 * * * /home/databackup/autoftp.sh 2>&1

--------------------------------------------------
保存,可以用命令:crontab –l
来查看.

上述的作用:每天19:30执行backup.sh文件,而backup.sh进行备份当天的数据,并删除前第6天的数据,则保留前5天的数据。每天22:30执行autoftp.sh文件,把当天的备份数据从数据库服务器1上传到另一服务器2。

2.5在服务器2上创建删除前第6天的 shell文件

每天都从数据库服务器1的备份数据上传到另一服务器2上,但服务器2)上的容量也是有限的,只保留前5天的数据,每天自动删除前第六天的备份数据。因为上传的用户名为risesoft,所以用risesoft用户在服务器2的/home/risesoft/67OracleBackup目录下创建并编写delete.sh文件。
内容如下:

rm -f /home/risesoft/67OracleBackup/risenet56`date -d -5day +%Y%m%d`.tar.gz
#删除前第5天的数据
--------------------------------------------------
2.6在服务器2上给delete.sh文件赋予权限备份的数据是用risesoft用户上传上来的,用risesoft用户给delete.sh赋予相应的权限,启动一个终端,执行切换用户命令:su – risesoft
,然后输入用户的密码。执行赋予权限命令:chmod +x /home/risesoft/67OracleBackup/delete.sh

2.7在服务器2中的crontab定时执行delete.sh文件
用oracle用户启动一个终端,输入命令进行编写:crontab –e
内容如下:
30
23 * * * /home/risesoft/67OracleBackup/delete.sh 2>&1

--------------------------------------------------
保存,可以用命令:
crontab –l
来查看.

上述作用:在每天的23:30自动执行delete.sh文件,delete.sh文件则自动删除在/home/risesoft/67OracleBackup目录下的前第5天的备份数据。

posted on 2009-04-23 14:17 都市淘沙者 阅读(1022) 评论(0)  编辑  收藏 所属分类: Linux/OpenVPN/Python


只有注册用户登录后才能发表评论。


网站导航: