कैसे लिनक्स में एक डिफ़ॉल्ट MySQL/MariaDB डेटा निर्देशिका को बदलने के लिए


CentOS/RHEL 7 सर्वर पर LAMP स्टैक के घटकों को स्थापित करने के बाद, कुछ चीजें हैं जो आप करना चाहते हैं।

उनमें से कुछ को अपाचे और MySQL/MariaDB की सुरक्षा बढ़ाने के साथ करना होगा, जबकि अन्य हमारे सेटअप या जरूरतों के अनुसार लागू हो सकते हैं या नहीं।

उदाहरण के लिए, डेटाबेस सर्वर के अपेक्षित उपयोग के आधार पर, हम डिफ़ॉल्ट डेटा निर्देशिका (<कोड>/var/lib/mysql ) को अलग स्थान पर बदलना चाह सकते हैं। यह ऐसा मामला है जब उच्च उपयोग के कारण ऐसी निर्देशिका बढ़ने की उम्मीद है।

अन्यथा, फ़ाइल सिस्टम जहाँ /var संग्रहीत है, एक बिंदु पर गिर सकता है, जिससे पूरी प्रणाली विफल हो सकती है। एक और परिदृश्य जहां डिफ़ॉल्ट निर्देशिका को बदलना है, जब हमारे पास एक समर्पित नेटवर्क शेयर है जिसे हम अपने वास्तविक डेटा को संग्रहीत करने के लिए उपयोग करना चाहते हैं।

इस कारण से, इस लेख में, हम समझाएंगे कि कैसे एक CentOS/RHEL 7 सर्वर और उबंटू/डेबियन वितरण पर एक अलग पथ पर डिफ़ॉल्ट MySQL/MariaDB डेटा निर्देशिका को बदलना है।

हालाँकि हम MariaDB का उपयोग करेंगे, परिकल्पित व्याख्या और इस आलेख में उठाए गए कदम MySQL और MariaDB दोनों पर लागू होते हैं जब तक कि अन्यथा नोट न किया गया हो।

डिफ़ॉल्ट MySQL/MariaDB डेटा निर्देशिका को बदलना

नोट: हम यह मानकर चल रहे हैं कि हमारी नई डेटा निर्देशिका /mnt/mysql-data है। यह ध्यान रखना महत्वपूर्ण है कि इस निर्देशिका का स्वामित्व mysql: mysql के पास होना चाहिए।

# mkdir /mnt/mysql-data
# chown -R mysql:mysql /mnt/mysql-data

आपकी सुविधा के लिए, हमने इस प्रक्रिया को 5 आसान चरणों में विभाजित किया है:

शुरू करने के लिए, यह निम्न कमांड का उपयोग करके वर्तमान डेटा निर्देशिका की पहचान करने के लिए योग्य और अच्छी तरह से है। केवल यह मत मानो कि यह अभी भी /var/lib/mysql है क्योंकि यह अतीत में बदला जा सकता था।

# mysql -u root -p -e "SELECT @@datadir;"

आपके द्वारा MySQL पासवर्ड दर्ज करने के बाद, आउटपुट समान होना चाहिए।

डेटा भ्रष्टाचार से बचने के लिए, सेवा को रोकें यदि यह वर्तमान में आगे बढ़ने से पहले चल रही है। ऐसा करने के लिए सिस्टमड प्रसिद्ध कमांड का उपयोग करें:

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status

यदि सेवा को नीचे लाया गया है, तो अंतिम कमांड का आउटपुट निम्नानुसार होना चाहिए:

फिर पुन: कॉपी करें /var/lib/mysql की सामग्री को /mnt/mysql-data मूल अनुमतियों और टाइमस्टैम्प को संरक्षित करके:

# cp -R -p /var/lib/mysql/* /mnt/mysql-data

नई डेटा निर्देशिका (<कोड>/mnt/mysql-data ) को इंगित करने के लिए कॉन्फ़िगरेशन फ़ाइल ( my.cnf ) को संपादित करें।

# vi /etc/my.cnf
OR
# vi /etc/mysql/my.cnf

[mysqld] और [क्लाइंट] अनुभागों का पता लगाएँ और निम्नलिखित बदलाव करें:

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock

Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

परिवर्तनों को सहेजें और फिर अगले चरण के साथ आगे बढ़ें।

यह कदम केवल आरएचईएल/सेंटोस और इसके डेरिवेटिव पर लागू है।

MariaDB पुनः आरंभ करने से पहले SELinux सुरक्षा प्रसंग को /mnt/mysql-data में जोड़ें।

# semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
# restorecon -R /mnt/mysql-data

अगला MySQL सेवा को पुनरारंभ करें।

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status

अब, नई डेटा निर्देशिका के स्थान को सत्यापित करने के लिए चरण 1 में उसी कमांड का उपयोग करें:

# mysql -u root -p -e "SELECT @@datadir;"

MariaDB में लॉगिन करें, एक नया डेटाबेस बनाएं और फिर /mnt/mysql-data देखें:

# mysql -u root -p -e "CREATE DATABASE tecmint;"

बधाई हो! आपने MySQL या MariaDB के लिए डेटा निर्देशिका को सफलतापूर्वक बदल दिया है।

इस पोस्ट में, हमने चर्चा की है कि कैसे एक MySQL या MariaDB सर्वर में CentOS/RHEL 7 और Ubuntu/Debian वितरण पर चल रहे डेटा डायरेक्टरी को बदलना है।

क्या आपके पास इस लेख के बारे में कोई प्रश्न या टिप्पणी है? नीचे दिए गए फ़ॉर्म का उपयोग करके हमें यह बताने में संकोच न करें - हम आपको सुनकर हमेशा खुश हैं!