मैं अलग-अलग विभाजन पर MySQL डेटा फ़ाइलों को कैसे स्थानांतरित कर सकता हूं?


27

मेरे पास मेरी हार्ड ड्राइव दो विभाजनों के साथ विभाजित है, इसलिए मैं आसानी से उबंटू को फिर से स्थापित कर सकता हूं और अपने होम डायरेक्टरी डेटा को खोए बिना विभिन्न संस्करणों को आज़मा सकता हूं। यह इस तरह से सेटअप है:

20GB  -> /     (root)
180GB -> /home 

मैं बहुत सारे विकास कार्य करता हूं, इसलिए मेरे पास मेरे /var/wwwफ़ोल्डर के लिए सहानुभूति है /home/valorin/workspace

लेकिन मैं अपने MySQL डेटा फ़ाइलों के साथ भी ऐसा करना चाहता हूं, क्योंकि मुझे गुस्सा आ रहा है कि हर बार जब मैं अपनी मशीन को पुनर्स्थापित करता हूं तो मुझे एक पूर्ण SQLdump करने की आवश्यकता होती है और फिर मैं और अधिक काम करने से पहले सभी DB को पुनर्स्थापित कर सकता हूं।

MySQL को तोड़े बिना ऐसा करने का सबसे अच्छा तरीका क्या है?

जवाबों:


30

खैर, वास्तव में इस सवाल का एक संभावित उबंटू विशिष्ट उत्तर है।

जैसा कि गर्गो लिंक द्वारा उल्लेख किया गया है, यह मूल रूप से /etc/mysql/my.cnf को संशोधित करने और डेटादिर = [mysqld] अनुभाग में एक नया मान सेट करने के बारे में है । अब तक उत्तर का अनिर्दिष्ट भाग।

यह मानते हुए कि आप उबंटू का कुछ आधुनिक संस्करण चला रहे हैं, आपके पास एप्लायमर डिफ़ॉल्ट रूप से स्थापित हो सकता है , लागू मोड में / usr / sbin / mysqld के लिए एक प्रोफ़ाइल के साथ । वह डिफ़ॉल्ट प्रोफ़ाइल बहुधा आपके नए डेटाडायर को स्वीकार नहीं करेगी।

हमें यह मानकर चलें कि आपका नया डेटाडियर / होम / डेटा / mysql होगा

यदि आप फ़ाइल /etc/apparmor.d/usr.sbin.mysqld खोलते हैं, तो आप नियमों के बीच इन दो पंक्तियों को खोजेंगे

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

ऊपर हमारे उदाहरण को मानते हुए, उन्हें इन दो पंक्तियों द्वारा प्रतिस्थापित या (शायद बेहतर) पूरक होना होगा।

/home/data/mysql/ r,
/home/data/mysql/** rwk,

इससे पहले कि हम अपने MySQL सर्वर को स्टार्टअप कर सकें, इसके नए डेटाडियर के साथ, हमें अपनी नई एपर्मोर प्रोफाइल को स्पष्ट रूप से पुनः लोड करना होगा।

$ sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld

यह नैटी (11.4) पर काम नहीं करता है। मुझे अपने परिवर्तित डेटा dir को पढ़ने के लिए MySQL / usr / sbin / mysqld का उपयोग करके शुरू करना था। अन्यथा, यह मेरे पुराने डेटा को पढ़ना जारी रखता है। यह मेरी तरफ से एक त्रुटि हो सकती है।
तीन-कप

उपरोक्त मेरे लिए Ubuntu 12.04 (सटीक) पर समस्या को हल करने में विफल रहा। मुझे पता चला कि किसी व्यक्ति को "alias / var / lib / mysql / -> / home / data / mysql /," एक जगह शामिल करने के लिए फ़ाइल /etc/apparmor.d/tunables/alias को संपादित करने की आवश्यकता है किसी भी अन्य AppArmor फ़ाइलों में किसी भी परिवर्तन की आवश्यकता नहीं है। यह AppArmor को "/etc/init.d/apparmor पुनरारंभ" और MySQL के साथ "पुनरारंभ mysql" के साथ पुनरारंभ करने के तुरंत बाद काम किया।
mak

मुझे लगता है कि उपयोग किए जाने वाले नए फ़ोल्डर पर कुछ अनुमतियों को सेट करने की आवश्यकता है। किसी को पता है कि वे क्या हैं? मुझे पता है कि mysql स्थापना mysql उपयोगकर्ता बनाता है ... और डिफ़ॉल्ट रूप से, मैं / var / lib / mysql फ़ोल्डर की सामग्री तक नहीं पहुँच सकता।
NullVoxPopuli

4

सुपर उपयोगकर्ता के पास इस प्रोबेल्म को हल करने के बारे में कदम निर्देश के द्वारा एक अच्छा कदम है

यहाँ एक ही काम करने पर निर्देश का एक और सेट है http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html

यहां इसे रिपॉजिट किया जाता है। यदि आप सुपर उपयोगकर्ता पर जा सकते हैं तो मूल वोट करें और ऊपर जाएं।

अनुमतियों के बारे में कुछ सामान्य भ्रम के बाद मुझे एहसास हुआ कि समस्या यह नहीं थी कि मेरे पास मेरी अनुमति और रास्ते सही नहीं थे लेकिन यह कि AppArmor mysql को नए स्थान पर पढ़ने और लिखने से रोक रहा था।

यह मेरा समाधान है:

पहली बार MySQL बंद करो तो कुछ अजीब नहीं होता जब आप फ़िदा होते हैं:

$ sudo stop mysql

फिर सभी डेटाबेस निर्देशिकाओं को अपने नए घर में स्थानांतरित करें:

$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/

फ़ाइलों को स्थानांतरित न करें, वे mysql द्वारा उत्पन्न होंगे, बस फ़ोल्डर्स (जो डेटाबेस हैं) को स्थानांतरित करें।

फिर विनम्रता से AppArmor से माईस्कल को नए फ़ोल्डर का उपयोग करने की अनुमति देने के लिए कहें:

$ sudo vim /etc/apparmor.d/usr.sbin.mysqld

लाइनें जोड़ें:

/new-mysql-dir/ r,
/new-mysql-dir/** rwk,

फिर mysql को बताएं कि दातादिर स्थानांतरित हो गया है:

$ sudo vim /etc/mysql/my.cnf 

लाइन बदलें:

datadir=/var/lib/mysql

सेवा मेरे:

datadir=/my-new-db-dir/

ध्यान दें: अपने डेटाबेस सेटअप के आधार पर आपको innodb-data-home-dir आदि को भी बदलना पड़ सकता है।

फिर नई सेटिंग्स को पढ़ने के लिए AppArmor को पुनरारंभ करें:

$ sudo /etc/init.d/apparmor restart

और नए डेटादिर का उपयोग करके MySQL को फिर से शुरू करें:

$ sudo start mysql

उम्मीद है की यह मदद करेगा!


0

यह वास्तव में Ubuntu विशिष्ट नहीं है। फिर भी, यहाँ कुछ ऐसा है जो मदद कर सकता है: http://developer.spikesource.com/wiki/index.php/How_to_change_the_mysql_database_location


निर्देश वास्तव में मदद नहीं करता था क्योंकि जिस हिस्से को मैं काम नहीं कर सकता था वह AppArmour था और आपकी पोस्ट ने केवल इसे पारित करने में समझाया। इसके अलावा, क्या यह साइट उन सवालों के लिए है जो उबंटू विशिष्ट हैं? नए उपयोगकर्ताओं को मदद के लिए कैसे पता है कि उबंटू-विशिष्ट है या नहीं, और जहां उन्हें सामान्य होना चाहिए, उन्हें कहां से पूछना चाहिए?
स्टीफन आरसी

वेबसाइट अनुपलब्ध है।
हेंजी

0

मेरे जैसे लोग जो VirtualBox के साथ काम करते हैं और होस्ट सिस्टम पर एक साझा फ़ोल्डर में MySQL डेटादिर को स्थानांतरित करने की आवश्यकता है, http://vacilando.org/en/article/moving-mysql-data-files-virtualbox पर सरल ट्यूटोरियल का पालन करें -साझा फ़ोल्डर


-1

यह ऐसे ही काम नहीं करेगा।

उपयोगकर्ता mysql को नए dir को लिखने का अधिकार है:

sudo chown -R mysql:mysql /newdatadir
sudo chmod -R 754 /newdatadir
sudo chmod 754 /newdatadir/..
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.