一、业务场景
数据库中产生的一些无效的或者废弃的数据。需要定期的删除,又不想写java的定时器,然后尝试着使用shell脚本进行处理该业务。
二、业务实现:
1、在服务器创建目录shell
2、创建脚本文件excute_mysql.sh
#!/bin/bash
# Define log
TIMESTAMP=`date +%Y%m%d%H%M%S` #日期
LOG=execute_sql_${TIMESTAMP}.log #日志名称
echo "Start execute sql statement at `date`." >>${LOG}
# execute sql start
HOSTNAME="127.0.0.1" #数据库信息
PORT="3306" #端口号
USERNAME="root" #数据库账户
PASSWORD="root" #数据库密码
DBNAME="ceshi_data" #数据库名称
TABLENAME1="u_order" #数据库中表的名称
TABLENAME2="u_order_item" #数据库中表的名称
#执行的sql语句
delete_sql="DELETE o,d
FROM ${TABLENAME1} o
LEFT JOIN ${TABLENAME2} d ON d.order_id = o.id
WHERE 1=1
AND o.state = 0
AND DATE(o.expire_date) < DATE(NOW())"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${delete_sql}"
3、授权脚本文件
chmod +x excute_mysql.sh
4、创建定时任务
crontab -e
5、每隔20分钟执行一次
*/20 * * * * /home/pan/java/shell/excute_mysql.sh
6、重启crond进程
service crond restart
7、查看crond进程状态
service crond status
8、查看crond任务
crontab -l