Назад | Перейти на главную страницу

Удаленно автоматизировать оптимизацию базы данных mysql

Я ни в коем случае не являюсь экспертом по 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> необходимо заполнить