linux shell脚本自动删除mysql表前3个月的数据

RDS有一个数据库表tbl_online表,有6千万数据,需要清理,保留3个月。

步骤如下:

  1. 创建月表
  2. 将需要删除的数据写入月表
  3. 删除数据
  4. 优化表

shell如下:

#!/bin/bash

base="rdsxx.mysql.rds.aliyuncs.com"

#前3个月的日期

months_ago=`date -d "-3 month" +"%Y-%m-%d"`

#前3个月的月份,去掉前面的0

months_ago_mon=`date -d "-3 month" +"%-m"`

#前3个月年份

years_ago_year=`date -d "-3 month" +"%-Y"`

#+++++++++++++++++++++++++++++++++++++

statime=`date +%Y-%m-%d" "%H:%M:%S`

echo "############################" >> /opt/tbl_online.log

#创建月表

/usr/local/mysql/bin/mysql -u root -h $base -e "use kd_shop;create table if not exists tbl_online_bak_"$years_ago_year"_$months_ago_mon like tbl_online;"

echo "$statime开始插入"$months_ago"数据" >> /opt/tbl_online.log

/usr/local/mysql/bin/mysql -u root -h $base -e  "use kd_shop;insert into tbl_online_bak_"$years_ago_year"_$months_ago_mon select * from tbl_online where create_time >= ‘$months_ago 00:00:00‘ and create_time <= ‘$months_ago 23:59:59‘;"

statime=`date +%Y-%m-%d" "%H:%M:%S`

echo "$statime插入数据完成" >> /opt/tbl_online.log

#++++++++++++++++++++++++++++++++++++++

statime=`date +%Y-%m-%d" "%H:%M:%S`

echo "$statime开始删除数据以及优化表" >> /opt/tbl_online.log

/usr/local/mysql/bin/mysql -u root -h $base -e "use kd_shop;delete from tbl_online where create_time >= ‘$months_ago 00:00:00‘ and create_time <= ‘$months_ago 23:59:59‘;optimize table tbl_online;"

statime=`date +%Y-%m-%d" "%H:%M:%S`

echo "$statime删除以及优化表完成" >> /opt/tbl_online.log

最后任务计划条用即可

时间: 2024-10-18 16:35:51

linux shell脚本自动删除mysql表前3个月的数据的相关文章

Shell脚本-----自动备份Mysql数据库

脚本的整体思路 1.定义需要的变量 2.利用for循环备份需要备份的库,并以库名-当天日期.sql命名,并记录相关日志 3.建立备份当天的日期的目录,向备份的Sql文件移动到该目录 4.压缩打包该目录,以节省空间,打包成功后删除该目录 5.备份目录只备份七天的数据库,第八天删除第一天的备份,目录只会存在连续七天的备份文件 6.查找备份目录下的.log日志文件,超过七天的删除 #!/bin/bash mysql_bin=/usr/local/tdoa/mysql/bin/mysqldump use

linux自动删除n天前日志

linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志,不用每天收到硬盘空间不足的报警短信,想好好休息的话,让我们把这个事情交给机器定时去执行吧. 1.删除文件命令: find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 实例命令: find /opt/soft/log/ -mtime +30

Windows自动删除n天前的文件的批处理脚本

数据库每天备份文件,然而只需要保留七天的备份即可,编写一个批处理脚本文件自动删除七天前的文件并设置定时任务 自动删除文件需要用到forfiles命令 forfiles参数:/p 指定的路径/s 包括子目录/m 查找的文件名掩码/d 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前   /c 运行的命令行   表示为每个文件执行的命令.命令字符串应该用双引号括起来. 默认命令是 "cmd /c echo @file".下列变量 可以用在命令字符串中: @file    -

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

LINUX SHELL脚本攻略笔记[速查]

Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述符和重定向 cat 数组和关联数组 alias date 调试脚本 函数和参数 管道 读取命令输出 read 字段分隔符和迭代器 循环 比较和测试 find xargs tr md5sum sha1sum 对目录进行校验 sort uniq tempfile split bash变量匹配切分 exp

Shell脚本自动部署(编译)LAMP平台

Shell脚本自动部署(编译)LAMP平台 LAMP是当下非常流行的一套Web架构,我们可以在GNU/Linux下通过其他人打包的程序包来进行安装; 但是在生产环境中,很多时候都需要我们自己定制安装AMP,编译安装LAMP有以下几个优点 根据生产环境灵活定制程序 优化编译参数,提高性能 解决不必要的软件依赖 友情提示:对编译安装有疑问的朋友, 查看我以前写的博客:教你使用rpm.yum.编译等方式安装软件 点击此处获得更好的阅读体验 为什么要用脚本进行部署? 在很多情况下部署LAMP平台并不止一

LInux Shell 脚本笔记

*************************** list.txt : 目录 ******************************** 1. variable.sh2. condition.sh3. control.sh4. AndOr.sh5. statementBlock.sh6. function.sh7. command_1.sh8. old_version_set.sh9. new_version_set.sh10. command_2.sh11. command_3.s

Shell脚本中执行mysql的几种方式(转)

Shell脚本中执行mysql的几种方式(转) 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到shell脚本文件中 复制代码 代码如下: --演示环境   [[email protected] ~]# more /etc/issue   CentOS rele

自动删除n天前日志

linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志,不用每天收到硬盘空间不足的报警短信,想好好休息的话,让我们把这个事情交给机器定时去执行吧. 1.删除文件命令: find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 实例命令: find /opt/soft/log/ -mtime +30