一、業務場景
數據庫中產生的一些無效的或者廢棄的數據。需要定期的刪除,又不想寫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