MySQL mysqldump ट्यूटोरियल: डेटाबेस निर्यात, बैकअप और पुनर्स्थापना के लिए संपूर्ण मार्गदर्शिका

目次

1. परिचय

MySQL वेब सेवाओं और व्यावसायिक अनुप्रयोगों के लिए सबसे अधिक उपयोग किए जाने वाले रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) में से एक है। MySQL के साथ निर्मित डेटाबेस अक्सर दैनिक संचालन और सेवाओं के मूलभूत भाग के रूप में कार्य करते हैं। यदि सिस्टम विफलताओं या मानव त्रुटि के कारण डेटा खो जाता है, तो यह व्यापार निरंतरता पर महत्वपूर्ण प्रभाव डाल सकता है।

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

इस टूल का उपयोग करके आप आपदा पुनर्प्राप्ति, किसी अन्य वातावरण में माइग्रेशन, और आवधिक अभिलेखीय संग्रहण जैसी विभिन्न परिचालन आवश्यकताओं को संभाल सकते हैं।

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

2. mysqldump का मूल उपयोग

mysqldump एक कमांड‑लाइन टूल है जिसका उपयोग MySQL डेटाबेस की सामग्री को एक SQL फ़ाइल में निर्यात करने के लिए किया जाता है। बुनियादी सिंटैक्स बहुत सरल है, और कुछ ही कमांड लाइनों से बैकअप बनाए जा सकते हैं। इस अनुभाग में, हम सामान्यतः उपयोग किए जाने वाले निर्यात तरीकों की व्याख्या करेंगे।

एकल डेटाबेस निर्यात करना

सबसे सामान्य उपयोग मामला एक पूरे एकल डेटाबेस को निर्यात करना है।

mysqldump -u username -p database_name > backup.sql

कार्यान्वयन के बाद, आपको पासवर्ड दर्ज करने के लिए कहा जाएगा, और निर्दिष्ट डेटाबेस की सामग्री backup.sql नामक फ़ाइल में आउटपुट हो जाएगी।

कई डेटाबेस निर्यात करना

यदि आप एक साथ कई डेटाबेस का बैकअप लेना चाहते हैं, तो --databases विकल्प का उपयोग करें।

mysqldump -u username -p --databases db1 db2 db3 > multi_backup.sql

इस फ़ॉर्मेट में प्रत्येक डेटाबेस के लिए एक CREATE DATABASE कथन शामिल किया जाता है, जिससे पुनर्स्थापना अधिक विश्वसनीय और सुविधाजनक बनती है।

सभी डेटाबेस निर्यात करना

सर्वर पर सभी डेटाबेस का बैकअप लेने के लिए --all-databases विकल्प का उपयोग करें।

mysqldump -u username -p --all-databases > all_backup.sql

यह कमांड MySQL सर्वर पर मौजूद सभी डेटाबेस को निर्यात करता है (जिसमें mysql, information_schema, performance_schema और अन्य शामिल हैं)।

उदाहरण: आउटपुट फ़ाइल नाम में तिथि शामिल करना

निर्धारित बैकअप के लिए, आउटपुट फ़ाइल नाम में तिथि शामिल करने से प्रबंधन आसान हो जाता है। नीचे UNIX शेल का उपयोग करके एक उदाहरण दिया गया है:

mysqldump -u username -p database_name > backup_$(date +%F).sql

इस दृष्टिकोण के साथ, backup_2025-04-13.sql जैसी फ़ाइल स्वचालित रूप से उत्पन्न होती है, जिससे बैकअप प्रबंधन अधिक व्यवस्थित हो जाता है।

3. निर्यात विविधताएँ

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

विशिष्ट तालिकाओं का निर्यात

यदि आप डेटाबेस के भीतर केवल विशिष्ट तालिकाओं का बैकअप लेना चाहते हैं, तो आप तालिका नाम स्पष्ट रूप से निर्दिष्ट कर सकते हैं।

mysqldump -u username -p database_name table1 table2 > selected_tables.sql

उदाहरण:

mysqldump -u root -p mydb users orders > users_orders.sql

यह कमांड mydb डेटाबेस से केवल users और orders तालिकाओं को निर्यात करता है।

केवल डेटा या केवल स्कीमा का निर्यात

mysqldump केवल स्कीमा परिभाषाएँ या केवल डेटा निर्यात करने के विकल्प प्रदान करता है।

  • केवल स्कीमा (संरचना) निर्यात करें:

    mysqldump -u username -p --no-data database_name > schema_only.sql
    
  • केवल डेटा निर्यात करें (CREATE TABLE कथनों को बाहर रखें):

    mysqldump -u username -p --no-create-info database_name > data_only.sql
    

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

शर्तों के साथ डेटा निर्यात करना (–where)

केवल डेटा का एक उपसमुच्चय निर्यात करने के लिए, --where विकल्प का उपयोग करें। यह SQL WHERE क्लॉज़ के समान सिंटैक्स का उपयोग करता है।

mysqldump -u username -p database_name table_name --where="condition" > filtered_data.sql

उदाहरण:

mysqldump -u root -p mydb users --where="created_at >= '2025-01-01'" > users_2025.sql

इस उदाहरण में, users तालिका से केवल 2025 या उसके बाद बनाए गए रिकॉर्ड निर्यात किए जाते हैं।

4. अक्सर उपयोग किए जाने वाले विकल्प और उनके स्पष्टीकरण

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

–single-transaction: लेन‑देन की स्थिरता बनाए रखें

mysqldump -u username -p --single-transaction database_name > backup.sql

यह विकल्प तब प्रभावी होता है जब InnoDB जैसे लेन‑देन‑समर्थित स्टोरेज इंजन का उपयोग किया जाता है। यह डंप प्रक्रिया को एक ही लेन‑देन के भीतर चलाता है, जिससे निर्यात के दौरान पढ़ने के लॉक लगाए बिना स्थिरता सुनिश्चित होती है। यह विशेष रूप से तब उपयोगी होता है जब बैकअप के दौरान सेवाओं को चलाते रहना आवश्यक हो।

नोट: यह विकल्प MyISAM जैसे गैर‑लेन‑देन इंजन पर कोई प्रभाव नहीं डालता।

–quick: मेमोरी उपयोग कम करें

mysqldump -u username -p --quick database_name > backup.sql

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

–routines और –events: स्टोरड प्रोसीजर और इवेंट्स को शामिल करें

डिफ़ॉल्ट रूप से, स्टोरड प्रोसीजर और इवेंट्स निर्यात में शामिल नहीं होते। उन्हें शामिल करने के लिए निम्नलिखित विकल्पों का उपयोग करें:

mysqldump -u username -p --routines --events database_name > backup_with_logic.sql
  • --routines : स्टोरड प्रोसीजर और फ़ंक्शन शामिल करें
  • --events : नियोजित इवेंट्स शामिल करें

यदि व्यावसायिक लॉजिक डेटाबेस स्तर पर व्यापक रूप से लागू किया गया है, तो इन विकल्पों को न भूलें।

–add-drop-table: तालिकाओं को ओवरराइट करने के लिए उपयोगी

mysqldump -u username -p --add-drop-table database_name > backup.sql

यह विकल्प प्रत्येक तालिका परिभाषा से पहले एक DROP TABLE IF EXISTS कथन जोड़ता है। यदि लक्ष्य वातावरण में समान नाम की तालिकाएँ पहले से मौजूद हैं, तो उन्हें पुनः निर्मित करने से पहले हटा दिया जाएगा।

–lock-tables: MyISAM के लिए प्रभावी

mysqldump -u username -p --lock-tables database_name > backup.sql

आमतौर पर InnoDB के लिए यह आवश्यक नहीं होता, लेकिन MyISAM का उपयोग करते समय यह विकल्प तालिकाओं को लॉक करता है ताकि निर्यात के दौरान लिखने से रोका जा सके। यह तब उपयोगी होता है जब स्थिरता अत्यंत महत्वपूर्ण हो।

5. निर्यात फ़ाइल को कैसे आयात करें

mysqldump द्वारा निर्यात की गई SQL फ़ाइलों को MySQL की मानक आयात विधियों का उपयोग करके पुनर्स्थापित (आयात) किया जा सकता है। इस अनुभाग में, हम बैकअप फ़ाइल से आयात करने की मूल बातें, व्यावहारिक पुनर्स्थापना उदाहरण, और प्रमुख सावधानियों की व्याख्या करेंगे।

बुनियादी आयात कमांड

एक निर्यात की गई SQL फ़ाइल को mysql कमांड का उपयोग करके आसानी से आयात किया जा सकता है। मूल सिंटैक्स इस प्रकार है:

mysql -u username -p database_name < backup.sql

उदाहरण:

mysql -u root -p mydb < backup.sql

जब आप यह कमांड चलाते हैं, तो backup.sql में मौजूद SQL कथन क्रम में निष्पादित होते हैं, और डेटाबेस अपनी मूल स्थिति में पुनर्स्थापित हो जाता है।

नई डेटाबेस में आयात करना

क्योंकि बैकअप फ़ाइल में CREATE DATABASE कथन नहीं हो सकता, यदि आप किसी अलग नाम की डेटाबेस में आयात करना चाहते हैं, तो आपको पहले नई डेटाबेस बनानी होगी।

उदाहरण: नई डेटाबेस “mydb_restore” बनाएं और आयात करें

CREATE DATABASE mydb_restore;
mysql -u root -p mydb_restore < backup.sql

नोट: --databases विकल्प के साथ निर्यात की गई SQL में CREATE DATABASE कथन शामिल होते हैं, इसलिए इस मामले में प्रक्रिया अलग होती है, इसका ध्यान रखें।

संकुचित फ़ाइल (.gz) आयात करना

यदि आपका बैकअप फ़ाइल gzip या समान से संकुचित है, तो आप इसे डिकम्प्रेस करते हुए सीधे आयात कर सकते हैं:

gunzip < backup.sql.gz | mysql -u username -p database_name

यह विधि आपको तेज़ी से पुनर्स्थापित करने की अनुमति देती है जबकि डिस्क स्थान बचाती है।

सामान्य आयात त्रुटियाँ और उन्हें कैसे ठीक करें

ErrorCauseSolution
ERROR 1049 (42000): Unknown databaseThe target database does not existCreate it in advance with CREATE DATABASE
Access deniedInsufficient permissions or incorrect credentialsRecheck the username, password, and privileges
ERROR 1064 (42000): You have an error in your SQL syntaxSQL format incompatibility between versionsVerify the dump matches the MySQL version you are using

सारांश: आयात को बैकअप प्रक्रिया का हिस्सा मानें

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

6. व्यावहारिक टिप्स और सावधानियाँ

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

gzip के साथ बड़े डेटाबेस को संकुचित करें

क्योंकि mysqldump साधारण‑पाठ SQL फ़ाइलें उत्पन्न करता है, ये बहुत बड़ी हो सकती हैं। कई गीगाबाइट से अधिक बड़े डेटाबेस के लिए, आउटपुट को संकुचित करने हेतु mysqldump को gzip के साथ मिलाना आम है।

mysqldump -u username -p database_name | gzip > backup.sql.gz

यह विधि डिस्क उपयोग को काफी हद तक कम कर सकती है और रिमोट ट्रांसफ़र के दौरान लोड को भी घटाती है।

निर्यात और आयात सत्यापन को आदत बनाएं

बैकअप बेकार है यदि आप आवश्यकता पड़ने पर इसे आयात नहीं कर सकते। हम निम्नलिखित कार्यों की सलाह देते हैं:

  • नियमित रूप से बैकअप को अलग वातावरण में पुनर्स्थापित करके परीक्षण करें
  • md5sum या sha256sum से फ़ाइल की अखंडता सत्यापित करें
  • महत्वपूर्ण डेटाबेस के लिए कई बैकअप पीढ़ियों को रखें

संस्करण अंतर के प्रति सतर्क रहें

यदि निर्यात स्रोत और आयात लक्ष्य के बीच MySQL संस्करण अलग है, तो सिंटैक्स और आंतरिक व्यवहार में अंतर SQL फ़ाइल को सही ढंग से चलाने से रोक सकता है।

  • यदि संभव हो, एक ही संस्करण पर कार्य करें
  • यदि आपको संस्करण बदलने की आवश्यकता है, तो विकल्पों के साथ व्यवहार नियंत्रित करें (उदाहरण: --set-gtid-purged=OFF )
  • अपग्रेड से पहले और बाद में हमेशा स्कीमा परिभाषा संगतता की पुष्टि करें

स्वचालन के लिए cron और स्क्रिप्ट्स का उपयोग करें

यदि आप स्वचालित दैनिक या साप्ताहिक बैकअप चलाना चाहते हैं, तो शेल स्क्रिप्ट्स और क्रॉन का उपयोग प्रबंधन को कुशल बनाता है।

#!/bin/bash
DATE=$(date +%F)
mysqldump -u root -p[password] mydb | gzip > /backup/mydb_$DATE.sql.gz

ऐसी स्क्रिप्ट को /etc/cron.daily/ के तहत रखकर, आप हर दिन स्वचालित रूप से बैकअप एकत्र कर सकते हैं।

नोट: सुरक्षा कारणों से, पासवर्ड सीधे लिखने से बचें। उन्हें सुरक्षित रूप से .my.cnf फ़ाइल के साथ प्रबंधित करने की सलाह दी जाती है।

सुरक्षा को भी ध्यान में रखें

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

  • स्टोरेज स्थान पर उपयुक्त पहुँच प्रतिबंध सेट करें
  • स्टोरेज और ट्रांसफ़र के लिए बैकअप एन्क्रिप्ट करें (उदाहरण: GPG या SFTP का उपयोग करके)
  • क्लाउड में स्टोर करते समय, स्वचालित बैकअप सेटिंग्स और लाइफ़साइकल प्रबंधन पर विचार करें

7. अक्सर पूछे जाने वाले प्रश्न (FAQ)

इस अनुभाग में, हम mysqldump के उपयोग से संबंधित सामान्य प्रश्नों और अक्सर मिलने वाली समस्याओं का सारांश Q&A प्रारूप में प्रस्तुत करते हैं।

प्रश्न 1. निर्यात के दौरान मुझे “Access denied” त्रुटि क्यों मिलती है?

उ. निर्दिष्ट MySQL उपयोगकर्ता के पास लक्ष्य डेटाबेस पर “SELECT” या “LOCK TABLES” जैसे आवश्यक अधिकार नहीं हो सकते हैं। आवश्यक अनुमतियों की जाँच करें और यदि आवश्यक हो तो अपने प्रशासक से उन्हें प्रदान करने को कहें। यदि टेबल लॉकिंग विफल हो जाती है, तो --single-transaction विकल्प का उपयोग कुछ मामलों में मददगार हो सकता है।

प्रश्न 2. बैकअप फ़ाइल का आकार अत्यधिक बड़ा है। क्या इसे कम करने का कोई तरीका है?

उ. यदि आपके पास बड़ी तालिकाएँ या बड़ी मात्रा में डेटा है, तो SQL फ़ाइल गीगाबाइट आकार तक पहुँच सकती है। आप निम्नलिखित तरीकों से आकार को कम कर सकते हैं:

  • gzip के साथ संकुचित करें (उदाहरण: mysqldump ... | gzip > backup.sql.gz )
  • केवल आवश्यक डेटा निर्यात करने के लिए --no-data या --no-create-info का उपयोग करें
  • निर्यातित डेटा को फ़िल्टर करने के लिए --where विकल्प का उपयोग करें (उदाहरण: विशिष्ट तिथि रेंज)

प्रश्न 3. मैं केवल विशिष्ट तालिकाएँ कैसे निर्यात कर सकता हूँ?

उ. कमांड के अंत में तालिका नामों की सूची दें ताकि केवल चयनित तालिकाएँ निर्यात हों।

mysqldump -u root -p mydb users orders > selected.sql

यह तब सुविधाजनक होता है जब आप पूरे डेटाबेस के बजाय केवल कुछ तालिकाओं का बैकअप लेना चाहते हैं।

प्रश्न 4. स्टोर्ड प्रोसीजर और इवेंट्स निर्यात में शामिल नहीं होते हैं। क्यों?

उ. डिफ़ॉल्ट रूप से, mysqldump स्टोर्ड प्रोसीजर (रूटीन) या शेड्यूल्ड इवेंट्स को शामिल नहीं करता है। इन्हें शामिल करने के लिए, निम्न विकल्प जोड़ें:

--routines --events

यह भी सुनिश्चित करें कि उपयोगकर्ता के पास इन ऑब्जेक्ट्स तक पहुँचने के लिए पर्याप्त अधिकार हों।

प्रश्न 5. बैकअप फ़ाइल को दूसरे सर्वर पर ट्रांसफ़र करते समय मुझे किन बातों का ध्यान रखना चाहिए?

उ. विचार करने योग्य मुख्य बिंदु:

  • कैरेक्टर एन्कोडिंग : यदि सर्वरों के बीच एन्कोडिंग अलग है, तो यह गड़बड़ टेक्स्ट का कारण बन सकता है। आवश्यक होने पर स्पष्ट रूप से --default-character-set=utf8 निर्दिष्ट करें।
  • वर्ज़न अंतर : स्रोत और लक्ष्य पर MySQL संस्करणों के बीच संगतता सुनिश्चित करें।
  • सुरक्षित फ़ाइल ट्रांसफ़र : सुरक्षित ट्रांसफ़र के लिए scp , rsync या SFTP का उपयोग करें।
  • फ़ाइल इंटेग्रिटी जांच : ट्रांसफ़र के बाद md5sum या sha256sum का उपयोग करके इंटेग्रिटी सत्यापित करें।

प्रश्न 6. Windows और Mac/Linux कमांड्स में अंतर हैं क्या?

उ. बुनियादी कमांड सिंटैक्स समान है, लेकिन शेल व्यवहार, बैच प्रोसेसिंग और डेट कमांड के उपयोग में अंतर होते हैं। उदाहरण के लिए, डेट के साथ फ़ाइल नाम जनरेट करते समय, Windows PowerShell या %DATE% वेरिएबल का उपयोग कर सकता है, जबकि Linux और macOS date कमांड का उपयोग करते हैं।

8. निष्कर्ष

इस लेख में, हमने MySQL बैकअप और माइग्रेशन टूल “mysqldump” को कवर किया है, बुनियादी उपयोग से लेकर उन्नत तकनीकों और ट्रबलशूटिंग तक।

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

✅ इस लेख से मुख्य निष्कर्ष

  • बेसिक mysqldump सिंटैक्स और तीन एक्सपोर्ट मेथड्स (सिंगल, मल्टीपल, और सभी डेटाबेस)
  • लचीले एक्सपोर्ट वैरिएशन जैसे कि केवल स्कीमा, केवल डेटा, और चयनित तालिकाएँ
  • वास्तविक उपयोग के लिए महत्वपूर्ण विकल्प जिसमें --single-transaction और --routines शामिल हैं
  • बेसिक रिस्टोर कमांड्स और इम्पोर्ट एरर्स को कैसे हैंडल करें
  • व्यावहारिक टिप्स जैसे gzip कंप्रेशन और क्रॉन ऑटोमेशन
  • FAQ सेक्शन में प्रदान किया गया उपयोगी ट्रबलशूटिंग ज्ञान

🛡 mysqldump के उपयोग के लिए सर्वोत्तम प्रैक्टिसेज

  1. सिर्फ बैकअप बनाना पर्याप्त नहीं—सुनिश्चित करें कि उन्हें पुनर्स्थापित किया जा सकता है
  2. वर्ज़न अंतर और कैरेक्टर एन्कोडिंग के कारण होने वाले मुद्दों के लिए तैयारी करें
  3. कंप्रेशन, ऑटोमेशन, और उचित एक्सेस कंट्रोल के साथ बैकअप ऑपरेशन्स डिजाइन करें
  4. अपने प्रोडक्शन कॉन्फ़िगरेशन से मेल खाने के लिए स्टोर्ड प्रोसीजर और इवेंट्स को शामिल करें

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

अपने वातावरण के लिए सर्वोत्तम बैकअप रणनीति बनाने के लिए इस गाइड को संदर्भ के रूप में उपयोग करें।