प्रमुख स्वतंत्र रूप से उपलब्ध डेटाबेस में से एक के रूप में, MySQL कई वेब अनुप्रयोगों के लिए एक लोकप्रिय विकल्प है। इंटरनेट के संपर्क में आने के कारण, आपका ऐप दुर्भावनापूर्ण हमलों के संपर्क में है। यदि आपके सर्वर से छेड़छाड़ की गई है, तो सबसे अच्छा, आपको एप्लिकेशन को फिर से इंस्टॉल करना होगा; कम से कम, आप अपना डेटा खो सकते हैं। इसके अलावा, आप ऐसी स्थिति में आ सकते हैं जहां आपको डेटाबेस को एक सर्वर से दूसरे सर्वर पर माइग्रेट करने की आवश्यकता हो।
mysqldump का उपयोग किस लिए किया जाता है?
mysqldump टूल ने आपको सर्वर समझौता और माइग्रेशन दोनों स्थितियों के लिए कवर किया है। इसका मूल कार्य एक MySQL डेटाबेस लेना और इसे टेक्स्ट फ़ाइल के रूप में डंप करना है। लेकिन कोई टेक्स्ट फ़ाइल नहीं; फ़ाइल SQL कथनों का एक सेट है।निष्पादित होने पर ये कथन, डेटाबेस को उस सटीक स्थिति में फिर से संगठित करते हैं, जब डंप निष्पादित किया गया था।
डेटाबेस के निर्यात को बैकअप के रूप में बनाने के लिए या डेटाबेस को नए होस्ट में ले जाने के लिए mysqldump का उपयोग करें। किसी भी स्थिति में, टेक्स्ट फ़ाइल को एक MySQL डेटाबेस सर्वर में वापस आयात किया जाएगा। यह फ़ाइल में सभी SQL कथनों को निष्पादित करेगा, जो डेटाबेस को उसकी मूल स्थिति में पुन: बनाता है। यह भाग mysqldump कमांड का उपयोग नहीं करता है, लेकिन यह इस उपयोगिता के बिना भी संभव नहीं होगा।
MySQL डॉक्स बैकअप बनाने के अन्य तरीकों की सूची देता है, लेकिन इनमें कमियां हैं:
- MySQL एंटरप्राइज़ से डेटाबेस को हॉटकॉपी करना इन बैकअप को प्राप्त करने का एक शानदार तरीका है - यदि आपको एंटरप्राइज़ मूल्य टैग से कोई आपत्ति नहीं है।
- ऑपरेटिंग सिस्टम पर चलते समय डेटाबेस डेटा निर्देशिकाओं की प्रतिलिपि बनाना मुश्किल हो सकता है, क्योंकि गंतव्य अलग होंगे।
- सीमांकित टेक्स्ट फ़ाइल में निर्यात करने से आपको सामग्री मिल जाएगी, लेकिन आपको संरचना को फिर से बनाना होगा।
- आप अक्सर MySQL वर्कबेंच जैसे GUI प्रोग्राम से डेटाबेस का बैकअप ले सकते हैं। लेकिन यह एक मैनुअल प्रक्रिया है; ऐसा कुछ नहीं जिसे आप स्क्रिप्ट कर सकते हैं या बैच जॉब में शामिल कर सकते हैं।
mysqldump टूल इंस्टॉल करें
विंडोज के लिए, विंडोज 7 पर MySQL इंस्टाल करने के लिए हमारे निर्देशों की जांच करें (इंस्टॉल प्रक्रिया विंडोज 10 के लिए समान है)। MacOS पर, macOS 10.7 (फिर से, पुराने लेकिन अभी भी लागू) पर MySQL स्थापित करने के लिए हमारे निर्देश देखें। उबंटू-आधारित लिनक्स सिस्टम के उपयोगकर्ता MySQL क्लाइंट और उपयोगिताओं को स्थापित करने के लिए निम्न कमांड का उपयोग कर सकते हैं:
sudo apt mysql- क्लाइंट स्थापित करें
एक MySQL डंप निकालें
इंस्टॉल हो जाने के बाद, डेटाबेस का पूरा बैकअप लेने के लिए mysqldump का उपयोग करें।
mysqldump -h [आपके DB होस्ट का नाम या IP] -u [DB उपयोगकर्ता का नाम] -p [डेटाबेस का नाम] > db_backup.sql
इस कमांड में इस्तेमाल किए गए झंडे का विवरण यहां दिया गया है:
- - h: यह फ्लैग डेटाबेस होस्ट है। यह एक पूर्ण होस्टनाम (उदाहरण के लिए, myhost.domain.com) या एक आईपी पता हो सकता है। यदि आप उसी होस्ट पर MySQL सर्वर पर कमांड चलाते हैं तो इसे खाली छोड़ दें।
- - u: आपका उपयोगकर्ता नाम।
- - p: यदि आपने MySQL इंस्टॉलेशन को ठीक से सुरक्षित किया है, तो आपको कनेक्ट करने के लिए एक पासवर्ड की आवश्यकता होगी। जब आप कमांड निष्पादित करते हैं तो बिना तर्क वाला यह ध्वज आपको पासवर्ड के लिए संकेत देता है। कभी-कभी इस ध्वज के तर्क के रूप में सीधे पासवर्ड प्रदान करना उपयोगी होता है, उदाहरण के लिए, बैकअप स्क्रिप्ट में। लेकिन प्रॉम्प्ट पर, आपको ऐसा नहीं करना चाहिए, क्योंकि अगर किसी ने आपके कंप्यूटर तक पहुंच प्राप्त कर ली है, तो उन्हें यह पासवर्ड कमांड हिस्ट्री में मिल सकता है।
- > db_backup.sql: यह भाग mysqldump को अपने आउटपुट को एक फ़ाइल में निर्देशित करने के लिए कहता है। आम तौर पर, कमांड कंसोल पर सब कुछ आउटपुट करता है, जिसका अर्थ है कि आपको स्क्रीन पर कई SQL स्टेटमेंट दिखाई देंगे। > प्रतीक आउटपुट को नामित टेक्स्ट फ़ाइल में फ़नल करता है। अगर यह फ़ाइल मौजूद नहीं है, तो यह अपने आप बन जाती है।
जब यह समाप्त हो जाए, तो आपके पास एक. SQL फ़ाइल होगी। यह एक टेक्स्ट फ़ाइल है जिसमें SQL स्टेटमेंट होते हैं। सामग्री का निरीक्षण करने के लिए आप इसे किसी भी टेक्स्ट एडिटर में खोल सकते हैं। यहां एक वर्डप्रेस डेटाबेस से निर्यात किया गया है जो दिखाता है कि इन फ़ाइलों को एक साथ कैसे रखा जाता है।
फ़ाइल को खंडों में विभाजित किया गया है। पहला खंड वर्डप्रेस टिप्पणियों के लिए तालिका तैयार करता है। दूसरा खंड उन तालिकाओं में सामग्री को फिर से बनाता है (इस उदाहरण में, टिप्पणी रिकॉर्ड)। जब आप MySQL डंप को फिर से आयात करते हैं, तो कमांड फ़ाइल के माध्यम से काम करता है, कथनों को निष्पादित करता है, और डेटाबेस को उसी तरह फिर से बनाता है जैसे वह था।
एक MySQL डंप फ़ाइल आयात करें
डंप फ़ाइल आयात करने से पहले, आपको पहले से बनाए गए डेटाबेस और उसके वैध उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होगी। आपके पास डेटाबेस के लिए सभी अनुमतियां भी होनी चाहिए। आपको GRANT अनुमति की आवश्यकता नहीं है, लेकिन उन सभी को देना आसान है।
अपने डेटाबेस में सुरक्षा भूमिकाएं बदलने से पहले डेटाबेस अनुमतियों के बारे में अधिक जानें।
अपना डेटा पुनः आयात करने के लिए, mysql कमांड के साथ MySQL सर्वर में लॉग इन करें। प्रॉम्प्ट पर use [database name] टाइप करें और डेटाबेस का नाम बदलें। स्रोत [फ़ाइल नाम] दर्ज करें, और आपके द्वारा पहले ली गई डंप फ़ाइल का नाम बदलें।
जब आप समाप्त कर लेते हैं, तो संदेशों की एक सूची यह नोट करती हुई दिखाई देती है कि SQL कथन निष्पादित हो रहे हैं। त्रुटियों पर नज़र रखें, लेकिन अगर आपके पास सही अनुमतियाँ हैं, तो आपको ठीक होना चाहिए।
प्रक्रिया पूरी होने पर, आपके पास मूल डेटाबेस का डुप्लिकेट होगा। डेटाबेस के बीच समानता को सत्यापित करने के लिए, एक और डंप करें और फिर दो आउटपुट की तुलना करें। दो फाइलों की तुलना करने के लिए एक टेक्स्ट एडिटर या एक समर्पित डिफ टूल का उपयोग करें।
इन फ़ाइलों के बीच दो अंतर हैं, जैसा कि दाईं स्क्रॉलबार के ऊपर और नीचे लाल रेखाओं द्वारा दर्शाया गया है। पहली पंक्ति है जिसमें डेटाबेस का नाम है, और यह अलग है क्योंकि फ़ाइलों को अलग-अलग नाम दिया गया था। दूसरा डंप फ़ाइल के लिए टाइमस्टैम्प है। यह अलग है क्योंकि पहले के बाद दूसरा डेटाबेस बनाया गया था। अन्यथा, फ़ाइलें बिल्कुल समान हैं, जिसका अर्थ है कि उन्हें उत्पन्न करने वाले डेटाबेस भी हैं।
अक्सर पूछे जाने वाले प्रश्न
आप mysqldump त्रुटि को कैसे ठीक करते हैं: लॉक टेबल का उपयोग करते समय एक्सेस अस्वीकृत?
अपने डेटाबेस व्यवस्थापक से आपको LOCK विशेषाधिकार देने के लिए कहें। यदि यह समस्या का समाधान नहीं करता है, तो उसी mysqldump कमांड को चलाने का प्रयास करें जिसमें - -single-transaction ध्वज जोड़ें, जैसे कि [ $ mysqldump --single-transaction] [-u उपयोगकर्ता] [-p DBNAME] > backup.sql
क्या आप mysqldump के साथ "कहां" क्लॉज का उपयोग कर सकते हैं?
बैकअप बनाते समय WHERE क्लॉज का उपयोग करें जिसमें केवल दी गई शर्त को पूरा करने वाली पंक्तियाँ शामिल हों। उदाहरण के लिए, केवल 100 से अधिक आईडी कॉलम वाली पंक्तियों से डेटा डंप करने के लिए, "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql" दर्ज करें।