MySQL 8 को कॉन्फ़िगर करना
MySQL के दो प्रकार के पैरामीटर हैं:
स्टेटिक, जो MySQL सर्वर डायनेमिक को पुनरारंभ करने के बाद प्रभावी होता है, जिसे MySQL सर्वर को पुनरारंभ किए बिना ऑनलाइन बदला जा सकता है, संस्करण 5.7 और बाद में काम करता है।
चर निम्नलिखित के माध्यम से सेट किए जा सकते हैं:
- कॉन्फ़िगरेशन फ़ाइल
- स्टार्टअप स्क्रिप्ट
- SET कमांड का उपयोग करना
- स्थायी कॉन्फ़िगरेशन पैरामीटर
कॉन्फ़िगरेशन फ़ाइल का उपयोग करना:
कॉन्फिग फाइल /etc/my.cnf (RHL और CENTOS) और /etc/mysql/my.cnf(Debian) में मिल सकती है, आप इस फाइल को अपनी पसंद के संपादक में संपादित कर सकते हैं।
कॉन्फ़िगरेशन फ़ाइल में निम्न अनुभाग हैं, संबंधित पैरामीटर को उनके अंतर्गत रखा जाना चाहिए।
- [mysql]:अनुभाग mysql कमांड-लाइन क्लाइंट द्वारा पढ़ा जाता है
- [क्लाइंट]:अनुभाग सभी कनेक्टिंग क्लाइंट (mysql cli सहित) द्वारा पढ़ा जाता है
- [mysqld]:अनुभाग mysqlserver द्वारा पढ़ा जाता है
- [mysqldump]:अनुभाग को mysqldump नामक बैकअप उपयोगिता द्वारा पढ़ा जाता है
- [mysqld_safe]:mysqld_safeprocess (MySQL सर्वर स्टार्टअप स्क्रिप्ट) द्वारा पढ़ें
[[email protected] ~]# mysql -e "select @@server_id;"+---------------+| @@server_id |+---------------+| 1 |
सर्वर-आईडी पैरामीटर को 2 में बदलें और mysql सर्वर को पुनरारंभ करें
#vim /etc/my.cnfserver-id=2 (कॉन्फ़िगरेशन फ़ाइल में इस पैरामीटर को संपादित करें)#sudo systemctl mysqld को पुनरारंभ करें [[email protected] ~]# mysql -e "@@server_id का चयन करें;"+-- -----------+| @@server_id |+---------------+| 2|
स्टार्टअप स्क्रिप्ट के साथ पैरामीटर का उपयोग करना:
मान लीजिए कि आप एक स्टार्टअप स्क्रिप्ट का उपयोग करके MySQL शुरू करना चाहते हैं, न कि सिस्टमड के माध्यम से,
विशेष रूप से परीक्षण के लिए या कुछ अस्थायी परिवर्तन के लिए। आप चर को स्क्रिप्ट में पास कर सकते हैं
कॉन्फ़िग फ़ाइल में इसे बदलने के बजाय
# /usr/स्थानीय/mysql/bin/mysqld --basedir=/usr/स्थानीय/mysql --datadir=/usr/स्थानीय/mysql/data --plugin-dir=/usr/स्थानीय/mysql/lib /प्लगइन --user=mysql --log-error=/usr/local/mysql/data/centos7.err --pidfile=/usr/local/mysql/data/centos7.pid --init-file=/tmp/ mysql-init &
आप देख सकते हैं कि –init-file पैरामीटर सर्वर को पास कर दिया गया है। सर्वर प्रारंभ करने से पहले उस फ़ाइल में SQL कथन निष्पादित करता है
वैश्विक और सत्र चर का उपयोग करना:
चर के दायरे के आधार पर दो प्रकार के चर होते हैं:
वैश्विक:सभी नए कनेक्शनों पर लागू होता है
सत्र:केवल वर्तमान कनेक्शन (सत्र) पर लागू होता है
मैं इस उदाहरण के लिए sort_buffer_size का उपयोग करूंगा क्योंकि इसमें वैश्विक और सत्र-स्तर का दायरा है, इसलिए यह गुंजाइश को बहुत अच्छी तरह से समझाएगा।
mysql> SET GLOBAL Sort_buffer_size =512 * 1024;क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)mysql> SELECT @@sort_buffer_size;+--------------------- -+| @@sort_buffer_size |+----------------------+| 262144 |+---------------------+1 पंक्ति सेट में (0.00 सेकंड)
यह नहीं बदला क्योंकि सॉर्ट_बफ़र आकार में वैश्विक और सत्र-स्तर दोनों का दायरा है और नए सत्रों के लिए वैश्विक केवल एक डिफ़ॉल्ट है। हम सभी तरह से एक ही क्लाइंट कनेक्शन का उपयोग कर रहे थे इसलिए उसी ग्लोबल के साथ हमने नए सत्रों के लिए डिफ़ॉल्ट बदल दिया लेकिन हमारा सत्र नया नहीं है, हमारा सत्र डिफ़ॉल्ट के परिवर्तन से पहले शुरू हुआ। इसलिए हम ग्लोबल वैल्यू को क्वेरी करने के लिए Select @@global.sort_buffer_size का उपयोग कर सकते हैं
mysql> चुनें @@global.sort_buffer_size;+--------------------------+| @@global.sort_buffer_size |+--------------------------+| 524288 |+---------------------------+1 पंक्ति में सेट (0.00 सेकंड)mysql> चुनें @@global.sort_buffer_size, @@ session.sort_buffer_size;+-------------------------------+--------------------- -----------+| @@global.sort_buffer_size | @@session.sort_buffer_size |+--------------------------+--------------- -------------+| 524288 | 262144 |+---------------------------+---------------------------- -------------+1 पंक्ति सेट में (0.00 सेकंड)
स्थायी कॉन्फ़िगरेशन पैरामीटर:
प्रदर्शन स्कीमा, सत्र चर और वैश्विक चर तालिका से सॉर्ट_बफ़र_साइज़ की जाँच करें।
mysql> सेलेक्ट करें * performance_schema.session_variables से जहां वेरिएबल_नाम 'सॉर्ट_बफर_साइज' की तरह;+---------------------+--------------- ----+| VARIABLE_NAME | VARIABLE_VALUE |+----------------------+----------------+| सॉर्ट_बफ़र_साइज़ | 262144 |+----------------------+----------------+1 पंक्ति सेट (0.01 सेकंड)mysql> चयन में * Performance_schema.global_variables से जहां वेरिएबल_नाम 'सॉर्ट_बफ़र_साइज़' की तरह; VARIABLE_NAME | VARIABLE_VALUE |+----------------------+----------------+| सॉर्ट_बफ़र_साइज़ | 262144 |+----------------------+----------------+1 पंक्ति सेट (0.01 सेकंड)
दोनों समान हैं क्योंकि हमने इसे अभी तक नहीं बदला है। जांचें कि यह मान कहां से आ रहा है।
mysql> सेलेक्ट करें * performance_schema.variables_info से जहां वेरिएबल_नाम 'सॉर्ट_बफर_साइज' की तरह;+---------------------+--------------- -----+----------------------------+---------------+---------------- ------+----------+----------+----------+| VARIABLE_NAME | VARIABLE_SOURCE | VARIABLE_PATH | MIN_VALUE | MAX_VALUE | SET_TIME | SET_USER | SET_HOST |+---------------------+---------------------+---------- -----+----------+--------------------------+----------- -+----------+----------+| सॉर्ट_बफ़र_साइज़ | वैश्विक | /etc/my.cnf | 32768 | 18446744073709551615 | शून्य | शून्य | नल |+---------------------+---------------------+---------- -----+----------+--------------------------+----------- -+----------+----------+1 पंक्ति सेट में (0.01 सेकंड)
तो हम देख सकते हैं कि चर /etc/my.cnf से आ रहा है और VARIABLE_SOURCE मान वैश्विक है क्योंकि यह अभी तक नहीं बदला है सत्र ने कनेक्शन पर वैश्विक मूल्य चुना है।
आइए वैश्विक sor_buffer_size को बदलें और देखें कि परिणाम क्या होगा।
mysql> SET GLOBAL Sort_buffer_size =512 * 1024;क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)mysql> सेलेक्ट करें * Performance_schema.variables_info से जहां वेरिएबल_नाम 'सॉर्ट_बफर_साइज' की तरह है;+---------- ----------------------------------+----------+---------- ---+--------------------------+-------------------------- -----+----------+-----------+| VARIABLE_NAME | VARIABLE_SOURCE | VARIABLE_PATH | MIN_VALUE | MAX_VALUE | SET_TIME | SET_USER | SET_HOST |+---------------------+---------------------+---------- -----+----------+--------------------------+----------- ------------------------+----------+-----------+| सॉर्ट_बफ़र_साइज़ | डायनामिक | | 32768 | 18446744073709551615 | 2020-08-09 11:04:01.681846 | जड़ | लोकलहोस्ट |+---------------------+---------------------+---------- -----+----------+--------------------------+----------- ------------------------+----------+----------+1 पंक्ति सेट में (0.01 सेकंड )
अब जैसा कि हम देख सकते हैं कि स्रोत गतिशील है, SET_TIME बदल दिया गया है और यह मूल उपयोगकर्ता है जिसने परिवर्तन किए हैं।
आइए एक वेरिएबल की जांच करें जो प्रतीक्षा समय समाप्ति की तरह my.cnf में नहीं है।
mysql> सेलेक्ट करें * performance_schema.variables_info से जहां वेरिएबल_नाम 'wait_timeout' की तरह;+---------------+--------------- ------------------------+---------------+---------------+---------- ---+----------+----------+| VARIABLE_NAME | VARIABLE_SOURCE | VARIABLE_PATH | MIN_VALUE | MAX_VALUE | SET_TIME | SET_USER | SET_HOST |+---------------+---------------------+----------- --------------+----------+----------+----------+- ---------+| प्रतीक्षा_समय समाप्त | संकलित | | 1 | 31536000 | शून्य | शून्य | नल | --------------+----------+----------+----------+- -------------+1 पंक्ति सेट में (0.00 सेकंड)
आप देख सकते हैं कि चर स्रोत, इस मामले में, यह COMPILED . है जिसका अर्थ है कि हम सर्वर के डिफ़ॉल्ट मान का उपयोग कर रहे हैं। आइए इसे किसी और चीज़ में बदलें।
mysql> SET GLOBAL Wait_timeout=100;क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)
अब अगर हम फिर से जाँच करें कि स्रोत गतिशील होगा, तो हम वहाँ जाते हैं।
mysql> सेलेक्ट करें * performance_schema.variables_info से जहां वेरिएबल_नाम 'वेट_टाइमआउट' की तरह है;+---------------+--------------- ------------------------+---------------+---------------+---------- ---------------------+----------+-----------+| VARIABLE_NAME | VARIABLE_SOURCE | VARIABLE_PATH | MIN_VALUE | MAX_VALUE | SET_TIME | SET_USER | SET_HOST |+---------------+---------------------+------------ --------------+---------------+-------------------------- -----+----------+-----------+| प्रतीक्षा_समय समाप्त | डायनामिक | | 1 | 31536000 | 2020-08-09 11:08:57.537268 | जड़ | लोकलहोस्ट | --------------+---------------+-------------------------- -----+----------+----------+1 पंक्ति सेट में (0.01 सेकंड)
आइए इसे PERSIST कमांड के साथ लगातार बनाएं। नोट हमने इन परिवर्तनों को my.cnf फ़ाइल में नहीं जोड़ा है
mysql> SET PERSIST Wait_timeout=100;क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)
MySQL क्लाइंट से बाहर निकलें और जांचें कि सेटिंग वास्तव में mysqld-auto.cnf में है।
[[email protected] ~]# sudo cat /var/lib/mysql/mysqld-auto.cnf{ "Version" :1, "mysql_server" :{ "mandatory_roles" :{ "Value" :"dbt3_read23" , "मेटाडेटा" :{ "टाइमस्टैम्प" :1592984803211900 , "उपयोगकर्ता" :"रूट", "होस्ट" :"लोकलहोस्ट" } } , "वेट_टाइमआउट" :{ "मान" :"100", "मेटाडेटा" :{ "टाइमस्टैम्प":1596960656007284, "उपयोगकर्ता":"रूट", "होस्ट":"लोकलहोस्ट"}}}}}
mysql सर्वर को पुनरारंभ करें और वेरिएबल वेरिएबल वैल्यू से आने वाले पाथ की जांच करें, यह /var/lib/mysql/mysqld-auto.cnf से आएगा जैसा कि नीचे दिखाया गया है।
mysql> सेलेक्ट करें * performance_schema.variables_info से जहां वेरिएबल_नाम 'वेट_टाइमआउट' की तरह है;+---------------+--------------- ----------------------------------------+----------+-- ---------+----------------------------+----------+ -----------+| VARIABLE_NAME | VARIABLE_SOURCE | VARIABLE_PATH | MIN_VALUE | MAX_VALUE | SET_TIME | SET_USER | SET_HOST |+---------------+---------------------+------------ ------------------------+----------+---------------+------ -----------------------+----------+-----------+| प्रतीक्षा_समय समाप्त | निरंतर | /var/lib/mysql/mysqld-auto.cnf | 1 | 31536000 | 2020-08-09 11:10:56.007284 | जड़ | लोकलहोस्ट | ------------------------+----------+---------------+------ -----------------------+----------+----------+1 पंक्ति सेट में (0.01 सेकंड)
यदि आप 'sort_buffer_size' के लिए मान की जांच करते हैं तो यह अभी भी वैसा ही है जैसा हमने इसका मान नहीं बदला है, फिर भी उसी पथ से आ रहा है और स्रोत GLOBAL है।
mysql> चुनें * Performance_schema.variables_info से जहां वेरिएबल_नाम 'sort_buffer_size' पसंद करते हैं;+---------------------+----------- -----+----------------------------+---------------+---------------- ------+----------+----------+----------+| VARIABLE_NAME | VARIABLE_SOURCE | VARIABLE_PATH | MIN_VALUE | MAX_VALUE | SET_TIME | SET_USER | SET_HOST |+---------------------+---------------------+---------- -----+----------+--------------------------+----------- -+----------+----------+| सॉर्ट_बफ़र_साइज़ | वैश्विक | /etc/my.cnf | 32768 | 18446744073709551615 | शून्य | शून्य | नल |+---------------------+---------------------+---------- -----+----------+--------------------------+----------- -+----------+----------+1 पंक्ति सेट में (0.00 सेकंड)