एक डेटाबेस सर्वर आज के अनुप्रयोगों के लिए आवश्यक नेटवर्क अवसंरचना का एक महत्वपूर्ण घटक है। डेटा को स्टोर करने, पुनर्प्राप्त करने, अपडेट करने और हटाने की क्षमता के बिना (जब आवश्यक हो), वेब और डेस्कटॉप ऐप्स की उपयोगिता और दायरा बहुत सीमित हो जाता है।
इसके अलावा, एक डेटाबेस सर्वर को स्थापित, प्रबंधित और कॉन्फ़िगर करने का तरीका जानना (ताकि यह अपेक्षित रूप से संचालित हो) एक आवश्यक कौशल है जो प्रत्येक सिस्टम व्यवस्थापक के पास होना चाहिए।
इस लेख में हम संक्षेप में समीक्षा करेंगे कि कैसे एक मारियाडीबी डेटाबेस सर्वर को स्थापित और सुरक्षित किया जाए और फिर हम समझाएंगे कि इसे कैसे कॉन्फ़िगर किया जाए।
एक MariaDB सर्वर स्थापित करना और सुरक्षित करना
CentOS 7.x . में , मारियाडीबी ने MySQL को बदल दिया, जो अभी भी उबंटू . में पाया जा सकता है (मारियाडीबी के साथ)। openSUSE . के लिए भी यही सच है ।
संक्षिप्तता के लिए, हम केवल MariaDB . का उपयोग करेंगे इस ट्यूटोरियल में, लेकिन कृपया ध्यान दें कि अलग-अलग नाम और विकास दर्शन के अलावा, दोनों रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (आरडीबीएमएस संक्षेप में) लगभग समान हैं।
इसका मतलब है कि क्लाइंट-साइड कमांड MySQL both दोनों पर समान हैं और मारियाडीबी , और कॉन्फ़िगरेशन फ़ाइलों को नाम दिया गया है और एक ही स्थान पर स्थित हैं।
मारियाडीबी स्थापित करने के लिए, करें:
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # yum update && yum install mariadb mariadb-server # CentOS --------------- On Debian and Ubuntu --------------- $ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server --------------- On openSUSE --------------- # zypper update && zypper install mariadb mariadb-tools # openSUSE
ध्यान दें, उबंटू . में , आपको RDBMS रूट उपयोगकर्ता के लिए एक पासवर्ड दर्ज करने के लिए कहा जाएगा।
एक बार उपरोक्त पैकेज स्थापित हो जाने के बाद, सुनिश्चित करें कि डेटाबेस सेवा चल रही है और बूट पर शुरू करने के लिए सक्रिय हो गई है (CentOS में) और ओपनएसयूएसई आपको इस ऑपरेशन को मैन्युअल रूप से करने की आवश्यकता होगी, जबकि उबंटू . में स्थापना प्रक्रिया ने आपके लिए पहले ही इसका ध्यान रखा होगा):
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # systemctl start mariadb && systemctl enable mariadb --------------- On openSUSE --------------- # systemctl start mysql && systemctl enable mysql
फिर mysql_secure_installation
चलाएं लिखी हुई कहानी। यह प्रक्रिया आपको निम्न की अनुमति देगी:
- RDBMS रूट उपयोगकर्ता के लिए पासवर्ड सेट / रीसेट करें
- अज्ञात लॉगिन हटाएं (इस प्रकार केवल वैध खाते वाले उपयोगकर्ताओं को आरडीबीएमएस में लॉग इन करने में सक्षम बनाता है)
- लोकलहोस्ट के अलावा अन्य मशीनों के लिए रूट एक्सेस अक्षम करें
- परीक्षण डेटाबेस को हटा दें (जिसे कोई भी एक्सेस कर सकता है)
- 1 से 4 तक के परिवर्तनों को सक्रिय करें।
इस प्रक्रिया के अधिक विस्तृत विवरण के लिए, आप आरएचईएल/सेंटोस/फेडोरा और डेबियन/उबंटू में मारियाडीबी डेटाबेस स्थापित करें में पोस्ट इंस्टॉलेशन अनुभाग का उल्लेख कर सकते हैं।
MariaDB सर्वर को कॉन्फ़िगर करना
डिफ़ॉल्ट कॉन्फ़िगरेशन विकल्प दिए गए क्रम में निम्न फ़ाइलों से पढ़े जाते हैं:/etc/mysql/my.cnf
, /etc/my.cnf
, और ~/.my.cnf
।
अक्सर, केवल /etc/my.cnf
मौजूद। यह इस फ़ाइल पर है कि हम सर्वर-व्यापी सेटिंग्स सेट करेंगे (जिसे ~/.my.cnf
में समान सेटिंग्स के साथ ओवरराइड किया जा सकता है। प्रत्येक उपयोगकर्ता के लिए)।
पहली बात जो हमें my.cnf
. के बारे में ध्यान देने की आवश्यकता है यह है कि सेटिंग्स को श्रेणियों (या समूहों) में व्यवस्थित किया जाता है जहां प्रत्येक श्रेणी का नाम वर्ग कोष्ठक के साथ संलग्न होता है।
सर्वर सिस्टम कॉन्फ़िगरेशन [mysqld]
. में दिए गए हैं अनुभाग, जहां आमतौर पर आप नीचे दी गई तालिका में केवल पहली दो सेटिंग्स पाएंगे। बाकी अन्य अक्सर उपयोग किए जाने वाले विकल्प हैं (जहां संकेत दिया गया है, हम अपनी पसंद के एक कस्टम के साथ डिफ़ॉल्ट मान बदल देंगे):
सेटिंग और विवरण | डिफ़ॉल्ट मान |
datadir वह निर्देशिका है जहां डेटा फ़ाइलें संग्रहीत की जाती हैं। | datadir=/var/lib/mysql |
socket स्थानीय क्लाइंट कनेक्शन के लिए उपयोग की जाने वाली सॉकेट फ़ाइल के नाम और स्थान को इंगित करता है। ध्यान रखें कि सॉकेट फ़ाइल एक ऐसा संसाधन है जिसका उपयोग अनुप्रयोगों के बीच जानकारी पास करने के लिए किया जाता है। | socket=/var/lib/mysql/mysql.sock |
bind_address वह पता है जहां डेटाबेस सर्वर टीसीपी/आईपी कनेक्शन के लिए सुनेगा। यदि आपको अपने सर्वर को एक से अधिक आईपी पते पर सुनने की आवश्यकता है, तो इस सेटिंग को छोड़ दें (0.0.0.0 जिसका अर्थ है कि यह इस विशिष्ट होस्ट को निर्दिष्ट सभी आईपी पते पर सुनेगा)। हम सेवा को केवल उसके मुख्य पते (192.168.0.13) पर सुनने के निर्देश देने के लिए इसे बदल देंगे: bind_address=192.168.0.13 | bind_address=0.0.0.0 |
port उस पोर्ट का प्रतिनिधित्व करता है जहां डेटाबेस सर्वर सुन रहा होगा।
हम डिफ़ॉल्ट मान (3306) को 20500 से बदल देंगे (लेकिन हमें यह सुनिश्चित करने की ज़रूरत है कि कोई और उस पोर्ट का उपयोग नहीं कर रहा है): जबकि कुछ लोग तर्क देंगे कि अस्पष्टता के माध्यम से सुरक्षा अच्छा अभ्यास नहीं है, उच्चतर पोर्ट के लिए डिफ़ॉल्ट एप्लिकेशन पोर्ट को बदलना पोर्ट स्कैन को हतोत्साहित करने के लिए एक प्राथमिक-अभी तक प्रभावी-विधि है। | port=3306 |
innodb_buffer_pool_size मेमोरी का बफर पूल (बाइट्स में) है जो डेटा और इंडेक्स के लिए आवंटित किया जाता है जो कि इनोडब (जो कि मारियाडीबी में डिफ़ॉल्ट है) का उपयोग करते समय अक्सर एक्सेस किया जाता है। या XtraDB स्टोरेज इंजन के रूप में। हम डिफ़ॉल्ट मान को 256 एमबी से बदल देंगे: innodb_buffer_pool_size=256M | innodb_buffer_pool_size=134217728 |
skip_name_resolve इंगित करता है कि आने वाले कनेक्शन पर होस्टनाम का समाधान किया जाएगा या नहीं। अगर 1 पर सेट किया जाता है, जैसा कि हम इस गाइड में करेंगे, केवल आईपी पते। जब तक आपको अनुमतियों को निर्धारित करने के लिए होस्टनाम की आवश्यकता नहीं होती है, तब तक इस चर (कनेक्शन और प्रश्नों को गति देने के लिए) को इसके मान को 1 पर सेट करके अक्षम करना उचित है: Skip_name_resolve=1 | skip_name_resolve=0 |
query_cache_size डिस्क में क्वेरी कैश के लिए उपलब्ध आकार (बाइट्स में) का प्रतिनिधित्व करता है, जहां एक समान क्वेरी (के लिए) एक ही डेटाबेस और एक ही प्रोटोकॉल और एक ही कैरेक्टर सेट का उपयोग करके) किया जाता है। आपको एक क्वेरी कैश आकार चुनना चाहिए जो 1 के आधार पर आपकी आवश्यकताओं से मेल खाता हो) दोहराए जाने वाले प्रश्नों की संख्या, और 2) उन दोहराव वाले प्रश्नों के रिकॉर्ड की अनुमानित संख्या के वापस आने की उम्मीद है। फिलहाल हम इस मान को 100 एमबी पर सेट करेंगे: query_cache_size=100M | query_cache_size=0 (जिसका अर्थ है कि यह डिफ़ॉल्ट रूप से अक्षम है) |
max_connections सर्वर से एक साथ क्लाइंट कनेक्शन की अधिकतम संख्या है। हम इस मान को 30 पर सेट करेंगे: max_connections=30प्रत्येक कनेक्शन एक थ्रेड का उपयोग करेगा, और इस प्रकार स्मृति का उपभोग करेगा। max_connections सेट करते समय इस तथ्य को ध्यान में रखें। | max_connections=151 |
thread_cache_size क्लाइंट के डिस्कनेक्ट होने के बाद सर्वर द्वारा पुन:उपयोग के लिए आवंटित किए गए थ्रेड्स की संख्या को इंगित करता है और पहले से उपयोग में आने वाले थ्रेड्स को मुक्त करता है। इस स्थिति में, किसी नए थ्रेड को इंस्टेंट करने की तुलना में किसी थ्रेड का पुन:उपयोग करना सस्ता (प्रदर्शन-वार) होता है। फिर, यह आपके द्वारा अपेक्षित कनेक्शन की संख्या पर निर्भर करता है। हम इस मान को max_connections की आधी संख्या पर सुरक्षित रूप से सेट कर सकते हैं: thread_cache_size=15 | thread_cache_size=0 (डिफ़ॉल्ट रूप से अक्षम) |
CentOS . में , हमें SELinux . को बताना होगा MariaDB . को अनुमति देने के लिए गैर-मानक पोर्ट पर सुनने के लिए (20500 ) सेवा को फिर से शुरू करने से पहले:
# yum install policycoreutils-python # semanage port -a -t mysqld_port_t -p tcp 20500
फिर मारियाडीबी सेवा को फिर से शुरू करें।
MariaDB प्रदर्शन ट्यूनिंग
हमारी विशिष्ट आवश्यकताओं के अनुसार कॉन्फ़िगरेशन की जाँच और ट्यूनिंग में हमारी सहायता करने के लिए, हम mysqltuner स्थापित कर सकते हैं (एक स्क्रिप्ट जो हमारे डेटाबेस सर्वर के प्रदर्शन को बेहतर बनाने और इसकी स्थिरता बढ़ाने के लिए सुझाव देगी):
# wget https://github.com/major/MySQLTuner-perl/tarball/master # tar xzf master
फिर निर्देशिका को टारबॉल से निकाले गए फ़ोल्डर में बदलें (आपके मामले में सटीक संस्करण भिन्न हो सकता है):
# cd major-MySQLTuner-perl-7dabf27
और इसे चलाएं (आपको अपने प्रशासनिक मारियाडीबी खाते की साख दर्ज करने के लिए कहा जाएगा)
# ./mysqltuner.pl
स्क्रिप्ट का आउटपुट अपने आप में बहुत दिलचस्प है, लेकिन चलिए नीचे की ओर चलते हैं जहां समायोजित करने के लिए वेरिएबल अनुशंसित मान के साथ सूचीबद्ध हैं:
query_cache_type
सेटिंग इंगित करती है कि क्वेरी कैश अक्षम है या नहीं (0) या सक्षम (1) . इस मामले में, mysqltuner हमें इसे अक्षम करने की सलाह दे रहा है।
तो हमें इसे अभी निष्क्रिय करने की सलाह क्यों दी जाती है? इसका कारण यह है कि क्वेरी कैश ज्यादातर उच्च-पढ़ने/निम्न-लेखन परिदृश्यों में उपयोगी होता है (जो हमारे मामले में नहीं है, क्योंकि हमने अभी-अभी डेटाबेस सर्वर स्थापित किया है)।
चेतावनी :उत्पादन सर्वर के कॉन्फ़िगरेशन में परिवर्तन करने से पहले, आपको यह सुनिश्चित करने के लिए एक विशेषज्ञ डेटाबेस व्यवस्थापक से परामर्श करने के लिए अत्यधिक प्रोत्साहित किया जाता है कि mysqltuner द्वारा दी गई अनुशंसा मौजूदा सेटिंग पर नकारात्मक प्रभाव नहीं डालेगी।
सारांश
इस लेख में हमने बताया है कि मारियाडीबी डेटाबेस सर्वर को स्थापित और सुरक्षित करने के बाद उसे कैसे कॉन्फ़िगर किया जाए। उपरोक्त तालिका में सूचीबद्ध कॉन्फ़िगरेशन चर केवल कुछ सेटिंग्स हैं जिन पर आप सर्वर को उपयोग के लिए तैयार करते समय या बाद में इसे ट्यून करते समय विचार करना चाहेंगे। परिवर्तन करने से पहले हमेशा आधिकारिक MariaDB दस्तावेज़ देखें या हमारी MariaDB प्रदर्शन ट्यूनिंग युक्तियाँ देखें:
डॉन' टी मिस: 15 उपयोगी MariaDB प्रदर्शन ट्यूनिंग और अनुकूलन युक्तियाँ
हमेशा की तरह, इस लेख के बारे में आपके कोई प्रश्न या टिप्पणी होने पर हमें बताने में संकोच न करें। क्या कोई अन्य सर्वर सेटिंग्स हैं जिनका आप उपयोग करना चाहते हैं? नीचे दिए गए टिप्पणी फ़ॉर्म का उपयोग करके बेझिझक शेष समुदाय के साथ साझा करें।
लिनक्स प्रमाणित सिस्टम प्रशासक बनें