数据库如何自动一年删一次数据

数据库如何自动一年删一次数据,第1张

数据库自动一年删一次数据参考以下方法

第一步:登录需要备份数据库—>点击“管理”—>右键单击“维护计划”—>“维护计划向导”

第二步:在d出的页面框内进行填写信息,输入维护计划“名称”及“说明”,点击“更改”按钮

第三步:在“新建作业计划”界面进行相关的设置 计划类型:重复执行频率执行:每周、每天、每月(这里我选择每天进行备份) 每天频率:时间自行选择(这里我选择每12小时执行一次,一天两次备份) 持续时间:开始时间默认当前时间,结束时间可以不填以上可以根据数据备份需求进行设置,完成后点击“确定”

第四步:“选择维护任务”,这里我选择“备份数据库完整”及“清楚维护任务”,点击“”下一步,定期

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

如果是就一次的话就是

waitfor

delay

'02:00'

exec

sp_MSForEachTable

就是两分钟后执行存储过程sp_MSForEachTable,这个存储过程是微软为公开的,不过貌似不是很好用。

如果是在特定时间,比如晚上

10:20

BEGIN

WAITFOR

TIME

'22:20'

EXECUTE

sp_MSForEachTable

END

你可以自建一个存储过程,sp_DeleteAllData

CREATE

PROCEDURE

sp_DeleteAllData

AS

EXEC

sp_MSForEachTable

'ALTER

TABLE

?

NOCHECK

CONSTRAINT

ALL'

EXEC

sp_MSForEachTable

'ALTER

TABLE

?

DISABLE

TRIGGER

ALL'

EXEC

sp_MSForEachTable

'DELETE

FROM

?'

EXEC

sp_MSForEachTable

'ALTER

TABLE

?

CHECK

CONSTRAINT

ALL'

EXEC

sp_MSForEachTable

'ALTER

TABLE

?

ENABLE

TRIGGER

ALL'

EXEC

sp_MSFOREACHTABLE

'SELECT

*

FROM

?'

GO


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存