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 әдіс |
|---|---|---|
| Қарапайымдылық | Тез | Орнатуды қажет етеді |
| Қауіпсіздік | Құпия сөз ашық | Қорғалған |
| Ұсынылады | Сынақ/жергілікті | Өндіріс |
Оқиғалар синтаксисі туралы толығырақ - ресми құжаттамада.


