मैं अपने दोस्त के मैक का अस्थायी रूप से उपयोग कर रहा था जब तक कि मेरी खुद की सर्विस नहीं हो रही थी। इसलिए इस सप्ताह की शुरुआत में, मैंने अपने उपयोगकर्ता खाते को उसके मैक पर हटा दिया, जिसमें डेटाबेस का एक गुच्छा था जिसकी मुझे आवश्यकता थी। मैंने उस खाते को हटाने से पहले अधिकांश उपयोगकर्ता डेटा का बैकअप लिया था, लेकिन जल्द ही मुझे एहसास हुआ कि मैं डेटाबेस का बैकअप लेने से चूक गया हूं। सौभाग्य की बात और संभवतः इसका कारण यह है कि डेटाबेस डेटा निर्देशिका आम तौर पर उपयोगकर्ता खाते के बाहर रहती है। इस लेख में, मैं अपने दोस्तों के उपयोगकर्ता खाते का उपयोग करके इस डीबी डेटा को वापस पाने के बुलेट बिंदुओं का उल्लेख करूंगा (या आप एक नया भी बना सकते हैं और वही कदम उठा सकते हैं)।
- सुनिश्चित करें कि mariadb अभी भी
brew install mariadb
चलाकर स्थापित है मैंने पाया कि यह उपलब्ध था लेकिन होमब्रे के पास इंस्टॉल निर्देशिका तक पहुंच नहीं थी क्योंकि इसे एक अलग उपयोगकर्ता खाते से बनाया गया था। तो सबसे पहले हम इसे चलाकर रिकवर करते हैं:
sudo chown -R $(whoami) /usr/local/bin
यदि कमांड ने एक त्रुटि डंप फेंक दिया है जिसमें दिखाया गया है कि किन फ़ोल्डरों तक इसकी पहुंच नहीं है, तो आप प्रत्येक फ़ोल्डर के लिए एक ही कमांड चला सकते हैं। मैंने brew upgrade mariadb
भी चलाया नए mariadb इंस्टॉल के साथ डेटा तक बने रहने के लिए (हालाँकि मैं इसे आम तौर पर तब तक चलाने की सलाह नहीं दूंगा जब तक आप डेटाबेस का बैकअप नहीं ले लेते)।
- अगला आपको यह पता लगाना होगा कि कौन सी डेटा निर्देशिका mariadb उपयोग करती है और उस पर भी chown चलाती है। इसे चलाकर किया जा सकता है:
brew services list
यह चल रही सेवाओं और उनके रन कॉन्फ़िगरेशन की एक सूची देगा। बस mariadb कार्यों का कॉन्फिगरेशन खोलें और पैरामीटर देखें --datadir
एक्सएमएल में - तर्क ब्लॉक के अंदर होना चाहिए। मेरे मामले में, यह था --datadir=/usr/local/var/mysql
. अब उस पथ को कॉपी करें और चलाएं:
sudo chown -R $(whoami) /usr/local/var/mysql
इस बिंदु पर, आप सोच सकते हैं, क्यों न केवल डेटा निर्देशिका को अपने मैक में कॉपी करें और फिर सीधे डेटाबेस खोलें? यहाँ समस्या यह है कि फ़ोल्डर में केवल .ibd . है और .frm फ़ाइलें जो वास्तव में mySQL द्वारा आयात योग्य नहीं हैं। इसलिए मुझे इस डेटा डीआईआर के साथ फिर से MySQL सर्वर चलाना होगा और फिर इसे निर्यात करना होगा।
- अगला, मुझे यह सुनिश्चित करने के लिए किसी भी चल रहे mysql सर्वर को रोकना पड़ा कि मैं mysql को सुचारू रूप से शुरू कर सकूं। मैं इसे चलाकर करता हूं:
brew services stop mariadb
ps aux | grep mysql
अंतिम आदेश यह जांचना है कि कोई अन्य MySQL इंस्टेंस नहीं चल रहा है। यदि कमांड mysql चलाने वाली किसी भी प्रक्रिया को लौटाता है, तो उन्हें किल -9 कमांड का उपयोग करके मारने की आवश्यकता है या फिर, गतिविधि मॉनिटर खोलें, mysql को फ़िल्टर करने के लिए खोज का उपयोग करें और उन्हें मैन्युअल रूप से मारने के लिए मजबूर करें।
अब, ताजा mysql उदाहरण का उपयोग करके शुरू किया जा सकता है:
brew services start mariadb
वैकल्पिक रूप से, आप होमब्री सेवा कॉन्फ़िगरेशन की एक्सएमएल फ़ाइल में उल्लिखित बिन फ़ोल्डर में पाए गए प्रोग्राम को भी कॉल कर सकते हैं यानी पहली प्रोग्राम स्ट्रिंग लें और mysqld_safe
बदलें करने के लिए mysql.server start
और कमांड चलाओ। मेरे मामले में, मैंने इसे चलाकर किया:
/usr/local/opt/mariadb/bin/mysql.server start
यह सफलता लौटाएगा! अगर सेवा सफलतापूर्वक शुरू होती है। अन्यथा, आपको त्रुटि लॉग की जांच करनी होगी (/usr/local/var/mysql
में था) फ़ोल्डर मेरे लिए) यह पता लगाने के लिए कि क्या गलत हुआ और कुछ गुगली करके इसे हल करें।
और यह बहुत अधिक है, अब आप डेटाबेस का बैकअप ले सकते हैं जैसा कि आप सामान्य रूप से करते हैं। मैं इसे चलाकर करता हूं:
mysql -u root -p<password>
show databases
और यह सभी डेटाबेस की एक सूची देगा। और फिर प्रत्येक डेटाबेस के लिए बैकअप कमांड निष्पादित करें जिसे आप बैकअप करना चाहते हैं:
mysqldump -u root -p<password> dbname > dbname.sql
और यह काफी हद तक कैसे किया जाता है। और मैंने डेटाबेस को अपने लैपटॉप पर एयरड्रॉप कर दिया और किया गया।