远程自动化优化mysql数据库

远程自动化优化mysql数据库

我绝不是 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>参数需要填写

相关内容