MySQL में event_scheduler को स्थायी रूप से ON रखने के लिए (सर्वर रीस्टार्ट के बाद भी), कॉन्फिगरेशन फ़ाइल (my.cnf या my.ini) में सेट करना आवश्यक है।
विधि 1: कॉन्फिगरेशन फ़ाइल में (स्थायी - अनुशंसित)
Linux/macOS: /etc/my.cnf या /etc/mysql/my.cnf
[mysqld]
event_scheduler = ON
Windows: my.ini (आमतौर पर C:\ProgramData\MySQL\MySQL Server X.X\my.ini)
[mysqld]
event_scheduler = ON
परिवर्तन लागू करें
- फ़ाइल संपादित करें
- MySQL सर्वर रीस्टार्ट करें:
- Linux:
sudo systemctl restart mysqldयाsudo service mysql restart - Windows: Services.msc से MySQL सेवा रीस्टार्ट
- Linux:
- सत्यापित करें:
SELECT @@event_scheduler;→ON
विधि 2: रनटाइम में (अस्थायी - रीस्टार्ट पर रीसेट)
SET GLOBAL event_scheduler = ON;
यह तुरंत प्रभावी होता है लेकिन रीस्टार्ट पर OFF हो जाता है।
स्थिति जांचें
-- सत्र वेरिएबल
SELECT @@event_scheduler;
-- ग्लोबल वेरिएबल
SELECT @@GLOBAL.event_scheduler;
-- SHOW VARIABLES से
SHOW VARIABLES LIKE 'event_scheduler';
आउटपुट:
+-------------------+
| @@event_scheduler |
+-------------------+
| ON |
+-------------------+
रीस्टार्ट टेस्ट (मूल लेख से)
mysql> SELECT @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| ON |
+-------------------+
mysql> RESTART; -- MySQL 8.0+ कमांड
Query OK, 0 rows affected
-- कनेक्शन खो जाता है, पुनः कनेक्ट के बाद
mysql> SELECT @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| ON | -- कॉन्फिग फ़ाइल में सेट होने पर ON रहता है
+-------------------+
इवेंट शेड्यूलर क्या है?
- MySQL का बिल्ट-इन टास्क शेड्यूलर (क्रॉन जैसा)
- समय-आधारित इवेंट्स (CREATE EVENT) चलाने के लिए आवश्यक
- डिफॉल्ट: OFF (प्रदर्शन के लिए)
- ON करने पर बैकग्राउंड थ्रेड शुरू होता है
इवेंट बनाने का उदाहरण
CREATE EVENT daily_cleanup
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP
DO
DELETE FROM logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);
नोट
event_schedulerग्लोबल सिस्टम वेरिएबल है- सुपर विशेषाधिकार (SUPER privilege) आवश्यक
- कॉन्फिग फ़ाइल में सेट करने के बाद रीस्टार्ट अनिवार्य
- मॉनिटरिंग:
SHOW PROCESSLISTमें "event_scheduler" थ्रेड दिखेगा