数据库定时备份及删除

数据库定时备份及删除,第1张

首先利用数据库自带的命令行工具将数据库备份下来,例如对MySQL将databasename数据库备份到D:\data.sql(具体查阅数据库说明书)

mysqldump databasename >"D:\data.sql"

然后将该文件以日期参量重名名。如果指定保留N天的数据可能有一定困难,不过既然要求7天,不妨以星期作为区分。

假设文件名具有格式“data_日期.sql”,则更名语句为(建议先创建后改名,对于很大的数据库可能要备份很长时间并超过0点)

ren "data.sql" "data_%date%.sql"

若系统时间格式为“2009-04-05 星期日”,则产生文件“data_2009-04-05 星期日.txt”。

获取星期几的语句:%date:~11,3%

其中11表示从第11个字符开始(从0开始计算),总共截取3个字符。由此可获得字符串“星期日”。重名名前,删除以data_开头,包含“星期日”的文件

del "data_*%date:~11,3%*.sql"

这样就把上星期的那个文件删除了。

注意:如果系统日期格式与上面的不一致,数字需重新计算,特别是若日期中含有“/”、“:”等字符会导致创建文件失败,此时年月日星期均需手动提取,例如对“04/05/2009 Sun”,应使用“%DATE:~6,4%%DATE:~0,2%%DATE:~3,2%%DATE:~11,3%”得到“20090405Sun”。查看日期格式可使用“echo %date%”。

另外,如果某项(时间格式、文件名、路径等)包含空格则必须使用引号。

脚本源代码

mysqldump databasename >"D:\data.sql"

del "D:\data_*%date:~11,3%*.sql"

ren "D:\data.sql" "data_%date%.sql"

编为一个bat文件,添加计划任务,每天定时执行即可。

MySQL 5.1以后版本中有 Event ,这是类似Oracle中的job 可以通过创建Event,然后在里面调用删除过期记录的存储过程即可实现 定时每天备份mysql并定时删除上月记录(脚本) ouwsh | September 3, 2009 10:41 | Linux/Unix相关 | 阅读(1536) | 评论(0) shell脚本:

备份的脚本比较简单:

#!/bin/bash

# 定义年 月 日

year=`date +%Y`

month=`date +%m`

day=`date +%d`

# 定义备份的目录

BACKDIR=/bak_1/mysql/$year/$month/$day

# MySQL的root密码

ROOTPASS=123456

# 建立目录

mkdir -p $BACKDIR

# 获取数据库列表

DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`

# 备份

for dbname in $DBLIST

do

mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy

done

复制代码上面的脚本将数据库按"年/月/日"目录结构备份,将脚本存为back.sh添加到cron里每天凌晨3点执行

crontab -e

00 03 * * * root /root/back.sh

下面的是每月3号删除上个月的备份,存为del_bak.sh,每月3号3点3分执行

03 03 03 * * root /root/del_bak.sh

注意脚本上传后,要chmod一下权限,比如

chmod 755 /root/back.sh

#!/bin/bash

# 定义年 月 日

year=`date +%Y`

month=`date +%m`

#day=`date +%d`

# 取上一个月

month=`expr $month - 1`

# 如果是1月,则上一月为12,并且年也减1

if [ $month -eq 0 ]then

month=12

day=31

year=`expr $year - 1`

fi

# 因为备份时小于10月的月份有前导零,所以这里判断如果小于10月,则加前导零

if [ $month -lt 10 ]then

pre=0

fi

#获取要删除的目录名

BACKDIR=/bak1/mysql/$year/$pre$month

#删除了

rm -rf $BACKDIR

重新启动crond

/etc/rc.d/init.d/crond restart

1、manger studion连接到数据库实例, 打开"对象资源管理器", 没有看到的话, 按F8 2、”管理“--“维护计划”,右键"维护计划"--“新建维护计划”--输入维护计划名称--这样会出现创建维护计划的窗口,然后 在左边的工具箱中(没有的话, 按Ctrl+Alt+X), 将"备份数据库任务"拖到中间的黄色区域,双击拖出来的这个任务(或者右键“属性”), 会出现设计属性的窗口3、在数据库中, 选择你要备份的数据库,然后设置备份到那里, 并且设置备份的文件名如果要备份多个数据库,可以为每个数据库备份创建目录、名称5、单击"计划"后面的"..."按钮, 设置执行的时间计划. 最后保存就可以了. 注意事项: 1、必须把sql agent服务设置为自动启动2、同时注意启动定时备份任务3、如果要删除某段时间的备份,在左边的工具箱中(没有的话, 按Ctrl+Alt+X), 将"删除定时备份任务"拖到中间的黄色区域,双击拖出来的这个任务(或者右键“属性”), 会出现设计属性的窗口,进行相应的设置即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6849031.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存