Я ни в коем случае не являюсь экспертом по mysql или sql и не слишком разбираюсь в FreeBSD. У нас есть сервер, которому регулярно требуется одна таблица для удаления данных <временные рамки, на которые остается только 1 месяц данных. Типичная проблема в том, что таблица становится слишком большой и не может писать.
Когда я удален, есть только две команды:
mysql -h A.B.C.D -u ПОЛЬЗОВАТЕЛЬ -p радиус
mysql> DELETE FROM calls WHERE event_date_time < '2014-01-01 00:00:00';
mysql> optimize table calls;
Мне нужно сделать все это из джампбокса - у меня нет доступа к базовой ОС этого сервера. Как, например, настроить cronjob, чтобы делать это каждые два месяца?
Спасибо
Для записи cron:
0 1 1 */2 * root /bin/optimize.sh
Вышеуказанное выполняется в 01:00 каждый 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> необходимо заполнить