Cron MySQL және автоматты сақтық көшірме

Ескі жазбаларды жою, кестелерді тазалау, сақтық көшірме жасау - мұның бәрін PHP немесе bash-те қосымша сценарийлерсіз mysql-де жасауға болады.

MySQL -бұл жүйелік крон сияқты кіріктірілген тапсырмаларды жоспарлаушы, бірақ деңгейінде жұмыс істейді мәліметтер базасы.

Сыртқы тәжге қарағанда ыңғайлы болған кезде:

  • тапсырма тек мәліметтер базасындағы мәліметтерге қатысты.
  • серверге кіру жоқ.
  • атомдық қажет-бір транзакцияның ішінде орындау.

1-қадам. Тексеру және қосу

Алдымен жоспарлаушының белсенді екеніне көз жеткізіңіз:

  • SHOW VARIABLES LIKE 'event_scheduler';
КүйМән
ONЖұмысқа дайын
OFFҚосу керек

Іске қосу пәрменімен:

  • SET GLOBAL event_scheduler = ON;

Немесе конфигурация /etc/my.cnf арқылы (тұрақты):

  • ini[mysqld]
  • event_scheduler = on

Біздің серверлерде әдепкі бойынша қосылған. Егер сіздің хостингіңізде ол өшірілген болса - қолдауға жүгініңіз.

2-қадам. Оқиға жасау-ескі журналдарды жоюдың мысалы

Тапсырма: әр 60 минут сайын 3 күннен асқан жазбаларды жою.

  • DELIMITER ;;
  • CREATE EVENT e_delete_logs
  • ON SCHEDULE EVERY 60 MINUTE
  • COMMENT 'Ескірген журналдарды жою'
  • DO
  • BEGIN
  • DELETE FROM `namedb`.`logs` WHERE `ltime` <= CURDATE() - 3;
  • OPTIMIZE TABLE `namedb`.`logs`;
  • END;;

Аралық синтаксисі:

АралықЖазу
Әр сағат сайынEVERY 1 HOUR
Күн сайынEVERY 1 DAY
Қазірден 1 сағаттан кейінAT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
Бір рет белгілі күндеAT '2025-01-01 03:00:00'

3-қадам. Сақтық көшірме жасау - екі әдіс

№ 1 әдіс - деректер тікелей пәрменде

bash

  • 0 3 * * * mysqldump -u root -pПАРОЛЬ namedb > /backup/mydb_$(date +\%F).sql

Құпия сөз процестер тарихында көрінеді - өндіріске ұсынылмайды.

№ 2 әдіс - конфигурация файлы арқылы (қауіпсіз)

~/.my.cnf жасаңыз:

ini

  • [client]
  • user=root
  • password=СІЗДІҢ_ПАРОЛЬ

Құқықтар: chmod 600 ~/.my.cnf

Тапсырма:

bash

  • 0 3 * * * mysqldump mydb > /backup/mydb_$(date +\%F).sql

Әдістерді салыстыру:

Критерий№ 1 әдіс№ 2 әдіс
ҚарапайымдылықТезОрнатуды қажет етеді
ҚауіпсіздікҚұпия сөз ашықҚорғалған
ҰсыныладыСынақ/жергіліктіӨндіріс

Оқиғалар синтаксисі туралы толығырақ - ресми құжаттамада.