mysqldump में महारत: MySQL बैकअप, रिस्टोर, और सर्वोत्तम प्रथाएँ

目次

1. परिचय

डेटाबेस बैकअप और पुनर्स्थापना डेटा प्रबंधन के मूलभूत पहलू हैं और विश्वसनीय संचालन के लिए आवश्यक हैं। MySQL का “mysqldump” डेटाबेस को कुशलता और लचीलापन के साथ बैकअप करने के लिए एक व्यापक रूप से उपयोग किया जाने वाला उपकरण है। यह गाइड mysqldump के बुनियादी उपयोग से लेकर उन्नत विकल्पों का लाभ उठाने, पुनर्स्थापना विधियों, और समस्या निवारण तक सब कुछ की विस्तृत व्याख्या प्रदान करती है। हम लेख के अंत में सर्वोत्तम प्रथाओं और संदर्भ संसाधनों का भी परिचय देते हैं, इसलिए कृपया mysqldump को मास्टर करने के लिए इस गाइड का उपयोग करें।

2. mysqldump क्या है?

2.1 mysqldump का अवलोकन

mysqldump MySQL डेटाबेस के बैकअप बनाने के लिए उपयोग किया जाने वाला एक कमांड-लाइन टूल है। यह एक पूरे डेटाबेस, विशिष्ट तालिकाओं, या विशिष्ट मानदंडों से मेल खाने वाले डेटा को SQL स्क्रिप्ट के रूप में डंप कर सकता है। यह डंप फाइल डेटा को पुनर्स्थापित करने या डेटा को नए सर्वर पर माइग्रेट करने के लिए उपयोग की जाती है।

2.2 उपयोग के मामले

  • बैकअप : सिस्टम विफलताओं या डेटा हानि के लिए तैयार रहने के लिए नियमित रूप से बैकअप प्राप्त करें।
  • डेटा माइग्रेशन : सर्वरों के बीच डेटाबेस माइग्रेशन या डेटा को विकास वातावरणों में कॉपी करने के लिए उपयोग किया जाता है।
  • डेटा विश्लेषण : विश्लेषण और सत्यापन के लिए विशिष्ट डेटासेट निकालें।

3. बुनियादी उपयोग

3.1 बुनियादी कमांड सिंटैक्स

mysqldump के लिए बुनियादी कमांड सिंटैक्स निम्नलिखित है:

mysqldump -u username -p database_name > output_file_name.sql
  • -u username : डेटाबेस तक पहुंचने के लिए उपयोगकर्ता नाम।
  • -p : पासवर्ड के लिए प्रॉम्प्ट।
  • database_name : बैकअप करने के लिए डेटाबेस का नाम।
  • > output_file_name.sql : डंप फाइल का गंतव्य।

3.2 उपयोगकर्ता प्रमाणीकरण विकल्प

  • -h hostname : डेटाबेस सर्वर का होस्टनेम (डिफ़ॉल्ट localhost है)।
  • -P port_number : कनेक्ट करने के लिए पोर्ट नंबर (डिफ़ॉल्ट 3306 है)।

3.3 उदाहरण: पूरे डेटाबेस का बैकअप

mysqldump -u root -p mydatabase > backup.sql

यह कमांड mydatabase से सभी डेटा को backup.sql फाइल में बैकअप करता है। बैकअप फाइलनेम में तिथि शामिल करने से संस्करण प्रबंधन और ऐतिहासिक ट्रैकिंग की सुविधा मिलती है।

4. प्रमुख विकल्पों की व्याख्या

4.1 --all-databases (-A)

यह विकल्प आपको एक साथ सभी डेटाबेस का बैकअप लेने की अनुमति देता है। यह तब उपयोगी होता है जब आप पूरे सर्वर का बैकअप प्राप्त करना चाहते हैं।

mysqldump -u root -p --all-databases > all_databases_backup.sql

4.2 --no-data (-d)

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

mysqldump -u root -p mydatabase --no-data > schema_only_backup.sql

4.3 --where (-w)

जब आप केवल विशिष्ट शर्तों से मेल खाने वाले डेटा का बैकअप लेना चाहते हैं, तो इस विकल्प का उपयोग करें। उदाहरण के लिए, केवल उन रिकॉर्ड्स का बैकअप लें जहां is_active कॉलम 1 हो:

mysqldump -u root -p mydatabase --where="is_active=1" > filtered_data_backup.sql

4.4 --ignore-table

इस विकल्प का उपयोग बैकअप से विशिष्ट तालिकाओं को बाहर करने के लिए करें। यह तब उपयोगी होता है यदि ऐसी तालिकाएं हैं जिनका बैकअप आप नहीं लेना चाहते।

mysqldump -u root -p mydatabase --ignore-table=mydatabase.table1 > partial_backup.sql

5. व्यावहारिक उदाहरण

5.1 केवल विशिष्ट तालिकाओं का डंप

केवल विशिष्ट तालिकाओं का बैकअप लेने के लिए, डेटाबेस नाम के बाद तालिका नाम निर्दिष्ट करें।

mysqldump -u root -p mydatabase table1 > table1_backup.sql

यह कमांड केवल table1 से डेटा को table1_backup.sql में सहेजता है।

5.2 केवल डेटा / केवल स्कीमा का डंप

  • केवल डेटा : mysqldump -u root -p mydatabase --no-create-info > data_only_backup.sql केवल डेटा का बैकअप लेता है, तालिका संरचना शामिल किए बिना।
  • केवल स्कीमा : bash mysqldump -u root -p mydatabase --no-data > schema_only_backup.sql केवल तालिका स्कीमा का बैकअप लेता है।

5.3 शर्तीय डंप

विशिष्ट मानदंडों को पूरा करने वाले केवल डेटा का बैकअप लेने के लिए, --where विकल्प का उपयोग करें।

mysqldump -u root -p mydatabase --where="created_at >= '2023-01-01'" > recent_data_backup.sql

यह कमांड केवल उन डेटा का बैकअप लेता है जहां created_at 1 जनवरी 2023 या उसके बाद हो।

6. पुनर्स्थापना विधि

To restore a database backed up with mysqldump, use the mysql command. Restoration is the process of restoring the database state using a backup file.

6.1 बुनियादी पुनर्स्थापना सिंटैक्स

mysql -u username -p database_name < dump_file.sql
  • -u username : डेटाबेस से कनेक्ट होने के लिए उपयोगकर्ता नाम।
  • -p : पासवर्ड के लिए प्रॉम्प्ट करता है।
  • database_name : जिस डेटाबेस में पुनर्स्थापित करना है उसका नाम।
  • < dump_file.sql : पुनर्स्थापना के लिए उपयोग की जाने वाली डंप फ़ाइल।

6.2 उदाहरण: पुनर्स्थापना निष्पादित करना

mysql -u root -p mydatabase < backup.sql

यह कमांड backup.sql फ़ाइल से डेटा को mydatabase में पुनर्स्थापित करता है।

6.3 पुनर्स्थापना नोट्स

  • यदि वह डेटाबेस जिसमें आप पुनर्स्थापित कर रहे हैं मौजूद नहीं है, तो आपको पहले उसे बनाना होगा।
  • बड़ी मात्रा में डेटा को पुनर्स्थापित करने में समय लग सकता है, इसलिए पहले से योजना बनाना महत्वपूर्ण है।

7. mysqldump सर्वोत्तम प्रथाएँ

7.1 बैकअप शेड्यूल करना

mysqldump को स्क्रिप्ट करके और क्रॉन जैसे शेड्यूलर का उपयोग करके नियमित बैकअप को स्वचालित करें। निम्नलिखित शेल स्क्रिप्ट उदाहरण हर रात सभी डेटाबेस का बैकअप लेता है।

#!/bin/bash
mysqldump -u root -p'password' --all-databases > /path/to/backup/all_databases_$(date +%F).sql

7.2 बैकअप फ़ाइलों को एन्क्रिप्ट करना

चूंकि बैकअप फ़ाइलों में संवेदनशील जानकारी होती है, इसलिए उन्हें gpg जैसे टूल्स का उपयोग करके एन्क्रिप्ट करने की सलाह दी जाती है।

gpg -c /path/to/backup/all_databases_$(date +%F).sql

7.3 संस्करण संगतता

विभिन्न MySQL संस्करणों के बीच डेटा माइग्रेट करते समय असंगतता समस्याओं से सावधान रहें। अपग्रेड करने से पहले परीक्षण वातावरण में बैकअप और पुनर्स्थापना प्रक्रिया का सिमुलेशन करके संगतता की पुष्टि करें।

  1. टेबल परिभाषाओं को पुनर्स्थापित करना : mysqldump --all-databases --no-data --routines --events > dump-defs.sql इस कमांड से केवल टेबल संरचना को डंप करें और नई संस्करण के वातावरण में पुनर्स्थापित करके संगतता जांचें।
  2. डेटा को पुनर्स्थापित करना : mysqldump --all-databases --no-create-info > dump-data.sql एक बार टेबल परिभाषाएँ संगत साबित हो जाएँ, तो केवल डेटा को पुनर्स्थापित करें।
  3. परीक्षण वातावरण में सत्यापन : संस्करणों के बीच संगतता की पुष्टि करने के लिए, परीक्षण वातावरण में बैकअप और पुनर्स्थापना करें और उत्पादन वातावरण में माइग्रेट करने से पहले यह सुनिश्चित करें कि यह सही ढंग से काम करता है।

7.4 बैअप संग्रहण और सत्यापन

  • सुरक्षित बैकअप संग्रहण : बैकअप फ़ाइलों को बाहरी स्टोरेज या क्लाउड में रखें और नियमित रूप से अपडेट करें। ऑफ-साइट संग्रहण डेटा को शारीरिक क्षति से बचाता है।
  • नियमित पुनर्स्थापना सत्यापन : समय-समय पर पुनर्स्थापना परीक्षण करें ताकि यह पुष्टि हो सके कि बैकअप सही ढंग से पुनर्स्थापित हो सकते हैं। यदि बैकअप अमान्य हो तो पुनर्स्थापना सत्यापन को नज़रअंदाज़ न करना महत्वपूर्ण है।

8. समस्या निवारण

8.1 सामान्य त्रुटियाँ और समाधान

  • त्रुटि: @@GLOBAL.GTID_PURGED cannot be changed : यह त्रुटि MySQL 8.0 में GTID-संबंधी समस्याओं के कारण आती है। इसे --set-gtid-purged=COMMENTED विकल्प का उपयोग करके GTID सेटिंग को टिप्पणी करके टाला जा सकता है। mysqldump -u root -p mydatabase --set-gtid-purged=COMMENTED > backup.sql
  • त्रुटि: अपर्याप्त डिस्क स्पेस : यदि बड़े डेटाबेस के बैकअप के लिए डिस्क स्पेस पर्याप्त नहीं है, तो बैकअप को संुचित करें या सहेजने का स्थान बदलें। gzip के साथ संकुचित करके बैकअप इस प्रकार करें: mysqldump -u root -p mydatabase | gzip > backup.sql.gz
  • त्रुटि: अपर्याप्त अनुमतियाँ : यदि डेटाबेस उपयोगकर्ता के पास पर्याप्त विशेषाधिकार नहीं हैं, तो बैकअप या पुनर्स्थापना विफल हो जाएगी। आवश्यक विशेषाधिकार ( SELECT , LOCK TABLES , SHOW VIEW आदि) प्रदान करें और पुनः प्रयास करें।

8.2 संस्करण संगतता समस्याएँ

विभिन्न MySQL संस्करणों के बीच संस्करण संगतता समस्याओं को अपग्रेड करने से पहले परीक्षण के माध्यम से हल किया जाता है। विशेष रूप से MySQL 5.7 से 8.0 में माइग्रेट करते समय, --no-data विकल्प के साथ केवल टेबल परिभाषाएँ पुनर्स्थापित करने और संगतता की पुष्टि करने की सलाह दी जाती है।

  • असंगतता परीक्षण : अपग्रेड करने से पहले परीक्षण वातावरण में माइग्रेशन का सिमुलेशन करके संभावित समस्याओं की पहचान करें। असंगत सुविधाओं और सिंटैक्स पर ध्यान दें, और आवश्यकतानुसार SQL स्क्रिप्ट को संशोधित करें।

9. निष्कर्ष

mysqldump MySQL डेटाबेस को बैकअप और पुनर्स्थापित करने के लिए एक विश्वसनीय और शक्तिशाली उपकरण है। इस लेख ने बुनियादी उपयोग, उन्नत विकल्प, सर्वोत्तम प्रथाएँ और समस्या निवारण को कवर करते हुए एक व्यापक व्याख्या प्रदान की है। इस ज्ञान का उपयोग करके, आप mysqldump का उपयोग करके अपने डेटाबेस को कुशलतापूर्वक सुरक्षित और प्रबंधित कर सकते हैं।

बैकअप शेड्यूल करने और फ़ाइलों को एन्क्रिप्ट करने जैसी सर्वोत्तम प्रथाओं को अपनाने से डेटा सुरक्षा बढ़ती है और आपके डेटाबेस संचालन की विश्वसनीयता में सुधार होता है। mysqldump का सही उपयोग करने से आप डेटाबेस समस्याओं के लिए तैयार हो सकते हैं।

10. संदर्भ और अतिरिक्त संसाधन

mysqldump के बारे में अधिक जानने और इसे व्यावहारिक रूप से लागू करने के लिए इस संसाधन को देखें। साथ ही, नियमित रूप से बैकअप और पुनर्स्थापना सत्यापन करने से डेटाबेस सुरक्षा बनी रहेगी और संभावित डेटा हानि के लिए तैयारी होगी।