我绝不是 mysql 或 sql 专家,也不太熟悉 FreeBSD。我们有一个服务器,经常需要删除一个表的数据 < 一个时间范围内的数据,只留下 1 个月的数据。典型的问题是表变得太大,然后无法写入。
当我远程登录时只有两个命令:
mysql -h ABCD -u 用户 -p 半径
mysql> DELETE FROM calls WHERE event_date_time < '2014-01-01 00:00:00';
mysql> optimize table calls;
我必须通过 jumpbox 完成所有操作——我无法访问此服务器的底层操作系统。例如,我该如何设置 cronjob 来每两个月执行一次此操作?
谢谢
答案1
对于 cron 条目:
0 1 1 */2 * root /bin/optimize.sh
上述操作于每个月第一天的凌晨 1 点运行
脚本(/bin/optimize.sh):
#!/bin/bash
FIRST_DAY_OF_MONTH=$( date -d "`date`" +%Y-%m-01 )
DAY="$FIRST_DAY_OF_MONTH 00:00:00"
mysql -uUSER -pradius -h<host> -e "DELETE FROM calls WHERE event_date_time < '$DAY';"
mysql -uUSER -pradius -h<host> -e "optimize table calls;"
上面的代码将获取月份,找到第一天,然后删除到该点为止的数据。显然,您可以根据需要进行修改。
笔记:<host>参数需要填写