Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अपने MySQL डेटाबेस का बैकअप लें

MySQL एक ओपन सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (DBMS) है जिसे अक्सर संदर्भों के विस्तृत वर्गीकरण में तैनात किया जाता है। अक्सर इसे LAMP स्टैक के हिस्से के रूप में तैनात किया जाता है। डेटाबेस सिस्टम का उपयोग करना भी आसान है और अत्यधिक पोर्टेबल है और कई अनुप्रयोगों के संदर्भ में, अत्यंत कुशल है। चूंकि MySQL अक्सर बड़ी मात्रा में मिशन महत्वपूर्ण डेटा के लिए एक केंद्रीकृत डेटा स्टोर होता है, इसलिए आपके MySQL डेटाबेस का नियमित बैकअप बनाना सबसे महत्वपूर्ण आपदा पुनर्प्राप्ति कार्यों में से एक है जो एक सिस्टम व्यवस्थापक कर सकता है। यह मार्गदर्शिका आपके डेटाबेस का बैकअप बनाने के साथ-साथ बैकअप से डेटाबेस को पुनर्स्थापित करने के लिए कई अलग-अलग तरीकों को संबोधित करती है।

<टेम्पलेट x-if=visible><टेम्पलेट x-if=$isMobile()> <टेम्पलेट x-if=!$isMobile()> <टेम्पलेट x-if=खुला>

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

बैकअप पद्धति

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

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

  • *.sql mysqldump . के साथ बनाई गई फ़ाइलें किसी भी समय बहाल किया जा सकता है। आप डेटाबेस को संपादित भी कर सकते हैं .sql अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके मैन्युअल रूप से फ़ाइलें (बड़ी सावधानी से!)।
  • यदि आपके डेटाबेस केवल MyISAM स्टोरेज इंजन का उपयोग करते हैं, तो आप mysqldump को प्रतिस्थापित कर सकते हैं तेज़ mysqlhotcopy . के साथ कमांड करें ।

संपूर्ण डेटाबेस प्रबंधन प्रणाली (डीबीएमएस) का बैकअप बनाना

उपयोगकर्ताओं, अनुमतियों और पासवर्ड रखने वाले सिस्टम डेटाबेस सहित सभी डेटाबेस और तालिकाओं के साथ संपूर्ण डेटाबेस प्रबंधन प्रणाली का बैक अप (या "डंप") लेना अक्सर आवश्यक होता है।

विकल्प 1:mysqldump उपयोगिता का उपयोग करके संपूर्ण डेटाबेस प्रबंधन सिस्टम का बैकअप बनाएं

संपूर्ण MySQL डेटाबेस प्रबंधन प्रणाली का एकल सुसंगत बैकअप बनाने के लिए सबसे सीधा तरीका mysqldump का उपयोग करता है कमांड लाइन से उपयोगिता। वर्तमान टाइमस्टैम्प के साथ डेटाबेस डंप बनाने का सिंटैक्स इस प्रकार है:

mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p

वर्तमान निर्देशिका में डेटाबेस बैकअप शुरू करने से पहले यह आदेश आपको पासवर्ड के लिए संकेत देगा। आपके डेटाबेस के आकार के आधार पर इस प्रक्रिया में कुछ सेकंड से लेकर कुछ घंटों तक का समय लग सकता है।

crontab . में एक लाइन जोड़कर इस प्रक्रिया को स्वचालित करें :

0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD

ऊपर दिए गए उदाहरण के लिए, which mysqldump का उपयोग करें कमांड के सही पथ की पुष्टि करने के लिए, और root . को बदलें mysql उपयोगकर्ता के साथ आप बैकअप चलाना चाहते हैं, और PASSWORD उस उपयोगकर्ता के लिए सही पासवर्ड के साथ।

ध्यान दें crontab उदाहरण में, सुनिश्चित करें कि -P ध्वज और आपकी पासवर्ड प्रविष्टि के बीच कोई स्थान नहीं है।

विकल्प 2:MySQL डेटा निर्देशिका की प्रतियों का उपयोग करके संपूर्ण DBMS का बैकअप बनाएं

जबकि mysqldump उपकरण पसंदीदा बैकअप विधि है, ऐसे कुछ मामले हैं जिनके लिए एक अलग दृष्टिकोण की आवश्यकता होती है। mysqldump केवल तभी काम करता है जब डेटाबेस सर्वर पहुंच योग्य हो और चल रहा हो। यदि डेटाबेस प्रारंभ नहीं किया जा सकता है या होस्ट सिस्टम अप्राप्य है, तो हम सीधे MySQL के डेटाबेस की प्रतिलिपि बना सकते हैं। यह विधि अक्सर उन स्थितियों में आवश्यक होती है जहां आपके पास केवल उस फ़ाइल सिस्टम में माउंट किए गए आपके सिस्टम के डिस्क के साथ फ़िनिक्स जैसे पुनर्प्राप्ति वातावरण तक पहुंच होती है। यदि आप अपने सिस्टम पर ही इस पद्धति का प्रयास कर रहे हैं, तो सुनिश्चित करें कि डेटाबेस नहीं है दौड़ना। निम्न के जैसा एक आदेश जारी करें:

/etc/init.d/mysqld stop

MySQL के अधिकांश वितरण संस्करण पर, डेटा निर्देशिका /var/lib/mysql/ में स्थित होती है निर्देशिका। यदि यह निर्देशिका मौजूद नहीं है तो /etc/mysql/my.cnf की जांच करें डेटा निर्देशिका के पथ के लिए फ़ाइल। वैकल्पिक रूप से, आप निम्न आदेश जारी करके डेटा निर्देशिका के लिए अपना फ़ाइल सिस्टम खोज सकते हैं:

find / -name mysql

एक बार जब आप अपनी MySQL डेटा निर्देशिका ढूंढ लेते हैं तो आप इसे बैकअप स्थान पर कॉपी कर सकते हैं। निम्न उदाहरण मानता है कि MySQL डेटा निर्देशिका /var/lib/mysql/ पर स्थित है :

cp -R /var/lib/mysql/* /opt/database/backup-1266871069/

इस मामले में, हमने डेटा निर्देशिका की सामग्री को दोबारा कॉपी किया है (उदा. /var/lib/mysql/ ) /opt/ . के भीतर एक निर्देशिका के लिए पदानुक्रम (उदा. /opt/database/backup-1266871069/ ) कॉपी ऑपरेशन शुरू करने से पहले यह निर्देशिका मौजूद होनी चाहिए। संचालन के निम्नलिखित क्रम पर विचार करें:

/etc/init.d/mysql stop
mkdir -p /opt/database/backup-1266872202/
cp -R /var/lib/mysql/* /opt/database/backup-1266872202/

ये कमांड MySQL सर्वर डेमॉन को रोककर शुरू करते हैं, फिर /opt/database/backup-1266872202/ नाम की एक डायरेक्टरी बनाते हैं। , और डेटा निर्देशिका की एक पुनरावर्ती प्रतिलिपि निष्पादित करना। ध्यान दें कि हमने backup-[time_t] . का उपयोग करना चुना है हमारे उदाहरणों के लिए नामकरण परंपरा। अपने पसंदीदा संगठन और नामकरण योजना के लिए उपरोक्त पथों को प्रतिस्थापित करें। cp कमांड आउटपुट नहीं देता है और आपके डेटाबेस के आकार के आधार पर इसे पूरा करने में कुछ समय लग सकता है। अगर इसे पूरा होने में कुछ समय लगे तो घबराएं नहीं। जब कॉपी ऑपरेशन समाप्त हो जाता है, तो आप डेटा निर्देशिका को "टार" संग्रह में संग्रहीत करना चाह सकते हैं ताकि इसे प्रबंधित करना और मशीनों के बीच स्थानांतरित करना आसान हो सके। संग्रह बनाने के लिए निम्न आदेश जारी करें:

cd /opt/database/backup-1266872202
tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz

एक बार टारबॉल बन जाने के बाद, आप फ़ाइल को उस तरीके से आसानी से स्थानांतरित कर सकते हैं जो आपके लिए सबसे सुविधाजनक है। जरूरत पड़ने पर MySQL सर्वर डेमॉन को फिर से शुरू करना न भूलें:

/etc/init.d/mysql start

एकल डेटाबेस का बैकअप बनाना

कई मामलों में, संपूर्ण डेटाबेस सर्वर का बैकअप बनाने की आवश्यकता नहीं होती है। कुछ मामलों में जैसे कि वेब एप्लिकेशन को अपग्रेड करना, इंस्टॉलर डेटाबेस का बैकअप बनाने की सिफारिश कर सकता है यदि अपग्रेड डेटाबेस पर प्रतिकूल प्रभाव डालता है। इसी तरह, यदि आप उस डेटाबेस को किसी भिन्न सर्वर पर ले जाने के लिए किसी विशिष्ट डेटाबेस का "डंप" बनाना चाहते हैं, तो आप निम्न विधि पर विचार कर सकते हैं।

जब संभव हो, mysqldump का उपयोग करें एकल डेटाबेस के "डंप" को निर्यात करने के लिए उपकरण। यह कमांड निम्न के जैसा होगा:

mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql

उपरोक्त उदाहरण --all-databases का उपयोग करने के बजाय, पिछले अनुभाग में दिए गए उदाहरण की तरह है विकल्प, यह उदाहरण एक विशेष डेटाबेस नाम निर्दिष्ट करता है। इस मामले में हम danceLeaders . का बैक अप बनाते हैं डेटाबेस। इस आदेश का रूप, अधिक स्पष्ट संकेतन में इस प्रकार है:

mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql

एक अतिरिक्त उदाहरण के लिए, हम customer . नामक डेटाबेस का बैकअप लेंगे निम्न आदेश जारी करके रूट डेटाबेस खाते का उपयोग करना:

mysqldump -u root -p -h localhost customer > customerBackup.sql

mysqldump . से पहले आपको पासवर्ड के लिए संकेत दिया जाएगा इसकी बैकअप प्रक्रिया शुरू करता है। हमेशा की तरह बैकअप फ़ाइल, इस मामले में customerBackup.sql , उस निर्देशिका में बनाया जाता है जहां आप यह आदेश जारी करते हैं। mysqldump डेटाबेस के आकार और बैकअप चलाते समय होस्ट पर लोड के आधार पर कमांड कुछ सेकंड या कुछ घंटों में पूरा हो सकता है।

एकल तालिका का बैकअप बनाना

विकल्प 1:mysqldump यूटिलिटी का उपयोग करके सिंगल टेबल का बैकअप बनाएं

यह ऑपरेशन, mysqldump . के पिछले उपयोगों की तरह है इस दस्तावेज़ में उपयोगिता, आपको एकल डेटाबेस तालिका का बैकअप बनाने की अनुमति देती है। हमारे पहले के उदाहरणों को जारी रखते हुए निम्नलिखित उदाहरण आपको तालिका usernameRecords का बैकअप लेने की अनुमति देता है danceLeaders . में डेटाबेस।

 mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql

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

mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql

एक अतिरिक्त उदाहरण के लिए, हम customer . नाम के डेटाबेस से "ऑर्डर" नाम की टेबल का बैकअप लेंगे निम्न आदेश जारी करके रूट डेटाबेस खाते का उपयोग करना:

mysqldump -u root -p -h localhost customer order > customerBackup-order.sql

mysqldump . से पहले आपको पासवर्ड के लिए संकेत दिया जाएगा इसकी बैकअप प्रक्रिया शुरू होती है। हमेशा की तरह, बैकअप फ़ाइल (इस मामले में customerBackup.sql ) उस निर्देशिका में बनाया गया है जहां आप यह आदेश जारी करते हैं। mysqldump डेटाबेस के आकार और बैकअप चलाते समय होस्ट पर लोड के आधार पर कमांड कुछ सेकंड या कुछ घंटों में पूरा हो सकता है।

विकल्प 2:MySQL क्लाइंट का उपयोग करके सिंगल टेबल का बैकअप बनाएं और एक आउटफाइल स्टेटमेंट

MySQL क्लाइंट के पास ही कुछ बैकअप क्षमता है। यह तब उपयोगी होता है जब आप पहले से लॉग इन होते हैं और आप वर्तमान सत्र से बाहर नहीं निकलना चाहते हैं। यदि आप एक लाइव सिस्टम का उपयोग कर रहे हैं और समय कम नहीं कर सकते हैं, तो आपको उस तालिका को अस्थायी रूप से लॉक करने पर विचार करना चाहिए जिसका आप बैकअप ले रहे हैं।

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

  1. शुरू करने से पहले, हम LOCK TABLES . करने की सलाह देते हैं उन टेबल पर जिनका आप बैकअप लेना चाहते हैं, उसके बाद FLUSH TABLES यह सुनिश्चित करने के लिए कि बैकअप ऑपरेशन के दौरान डेटाबेस एक सुसंगत स्थान पर है। आपको केवल एक रीड लॉक चाहिए। जब आप MySQL डेटा निर्देशिका में फ़ाइलों की प्रतिलिपि बना रहे हों तो यह अन्य क्लाइंट को तालिकाओं से पूछताछ जारी रखने की अनुमति देता है। "रीड" लॉक के लिए, LOCK TABLES . का सिंटैक्स निम्न जैसा दिखता है:

    <टीडी क्लास =एलएनटीडी>
    1
    
    LOCK TABLES tableName READ;

    LOCK TABLES करने के लिए order . पर customer की तालिका डेटाबेस, निम्न आदेश जारी करें:

    mysql -u root -p -h localhost
    

    फिर आपको रूट पासवर्ड के लिए कहा जाएगा। एक बार जब आप डेटाबेस क्रेडेंशियल दर्ज कर लेते हैं, तो आप mysql क्लाइंट प्रॉम्प्ट पर पहुंचेंगे। order को लॉक करने के लिए निम्न आदेश जारी करें customer . में तालिका डेटाबेस (पिछला ; MySQL कमांड के लिए आवश्यक है):

    1
    2
    3
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
  2. अब हम बैकअप ऑपरेशन शुरू कर सकते हैं। MySQL क्लाइंट का उपयोग करके एकल तालिका का बैकअप बनाने के लिए, आपको अपने MySQL DBMS में लॉग इन करना होगा। यदि आप वर्तमान में लॉग इन नहीं हैं तो आप निम्न कमांड से लॉग इन कर सकते हैं:

    mysql -u root -p -h localhost
    

    आपको एक पासवर्ड के लिए कहा जाएगा। एक बार जब आप सही पासवर्ड दर्ज कर लेते हैं और MySQL क्लाइंट प्रॉम्प्ट पर होते हैं, तो आप SELECT * INTO OUTFILE का उपयोग कर सकते हैं बयान। इस कथन का सिंटैक्स निम्न जैसा दिखता है:

    <टीडी क्लास =एलएनटीडी>
    1
    
    SELECT * INTO OUTFILE 'file_name' FROM tbl_name;

    इस उदाहरण में, हम order . से डेटा का बैकअप बनाएंगे customer की तालिका डेटाबेस। बैकअप प्रक्रिया शुरू करने के लिए निम्न आदेश जारी करें (पिछला ; MySQL कमांड के लिए आवश्यक है):

    1
    2
    3
    4
    5
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
    SELECT * INTO OUTFILE 'customerOrderBackup.sql' FROM order;
    UNLOCK TABLES;

    customerOrderBackup.sql फ़ाइल MySQLs डेटा निर्देशिका के भीतर उपयुक्त डेटा उप-निर्देशिका में बनाई जाएगी। MySQL डेटा निर्देशिका आमतौर पर /var/lib/mysql/ है . इस उदाहरण में, OUTFILE होगा /var/lib/mysql/customer/customerOrderBackup.sql . हालाँकि, इस निर्देशिका और फ़ाइल का स्थान लिनक्स वितरण के बीच भिन्न हो सकता है। यदि आपको अपनी बैकअप फ़ाइल नहीं मिलती है, तो आप इसे निम्न आदेश के साथ खोज सकते हैं:

    find / -name customerOrderBackup.sql
    
  3. एक बार जब आप बैकअप ऑपरेशन पूरा कर लेते हैं, तो आप MySQL क्लाइंट में निम्न कमांड का उपयोग करके तालिकाओं को अनलॉक करना चाहेंगे। यह आपके डेटाबेस को उसके सामान्य ऑपरेशन में वापस कर देगा। यदि आप वर्तमान में लॉग इन नहीं हैं तो पहले कमांड के साथ MySQL क्लाइंट में लॉग इन करें और फिर दूसरा कमांड जारी करें:

    mysql -uroot -p -h localhost
    
    <टीडी क्लास =एलएनटीडी>
    1
    
    UNLOCK TABLES;

आप इस बिंदु से अपने डेटाबेस का सामान्य रूप से उपयोग करना जारी रख सकते हैं।

एक प्रभावी बैकअप रणनीति के लिए विचार

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

डेटाबेस का बैकअप लेते समय आपको रूट के रूप में लॉग इन करने की आवश्यकता नहीं है। पढ़ने वाला एक MySQL उपयोगकर्ता (उदा. SELECT ) अनुमति mysqldump . दोनों का उपयोग करने में सक्षम है और mysql (जैसे MySQL क्लाइंट) बैकअप लेने के लिए उपकरण, जैसा कि नीचे वर्णित है। सामान्य अभ्यास के रूप में, हम अनुशंसा करते हैं कि आप MySQL root . का उपयोग न करें सुरक्षा जोखिमों को कम करने के लिए जब भी संभव हो उपयोगकर्ता।

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

बैकअप से संपूर्ण डीबीएमएस को पुनर्स्थापित करना

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

विकल्प 1:MySQL क्लाइंट और mysqldump द्वारा बनाए गए बैकअप का उपयोग करके एक संपूर्ण DBMS को पुनर्स्थापित करना

बहाली प्रक्रिया शुरू करने से पहले, यह खंड मानता है कि आपका सिस्टम बिना किसी मौजूदा डेटाबेस या टेबल के MySQL का एक नया स्थापित संस्करण चला रहा है। यदि आपके पास अपने MySQL DBMS में पहले से ही डेटाबेस और टेबल हैं, तो कृपया आगे बढ़ने से पहले एक बैकअप बना लें क्योंकि यह प्रक्रिया वर्तमान MySQL डेटा को अधिलेखित कर देगी।

आप mysql . का उपयोग करके अपने संपूर्ण DBMS को आसानी से पुनर्स्थापित कर सकते हैं आज्ञा। इसके लिए सिंटैक्स निम्न के जैसा होगा:

mysql -u [username] -p [password] < backupFile.sql

इस मामले में हम केवल संपूर्ण DBMS को पुनर्स्थापित कर रहे हैं। कमांड निम्न की तरह दिखेगा:

mysql -u root -p < 1266861650-backup-all.sql

आपको रूट MySQL उपयोगकर्ता के पासवर्ड के लिए कहा जाएगा। एक बार सही क्रेडेंशियल्स की आपूर्ति के बाद, बहाली की प्रक्रिया शुरू हो जाएगी। चूंकि यह प्रक्रिया संपूर्ण DBMS को पुनर्स्थापित करती है, इसलिए इसमें कुछ सेकंड से लेकर कई घंटों तक का समय लग सकता है।

विकल्प 2:से सीधे कॉपी की गई MySQL डेटा फ़ाइलों का उपयोग करके एक संपूर्ण DBMS को पुनर्स्थापित करना MySQL की डेटा निर्देशिका

बहाली प्रक्रिया शुरू करने से पहले, यह खंड मानता है कि आपका सिस्टम बिना किसी मौजूदा डेटाबेस या टेबल के MySQL का एक नया स्थापित संस्करण चला रहा है। यदि आपके पास अपने MySQL DBMS में पहले से ही डेटाबेस और टेबल हैं, तो कृपया आगे बढ़ने से पहले एक बैकअप बना लें क्योंकि यह प्रक्रिया वर्तमान MySQL डेटा को अधिलेखित कर देगी।

  1. यदि आपके पास अपनी MySQL डेटा निर्देशिका का पूर्ण बैकअप है (आमतौर पर /var/lib/mysql ), आप इसे कमांड लाइन से पुनर्स्थापित कर सकते हैं। एक सफल पुनर्स्थापना सुनिश्चित करने के लिए, आपको पहले MySQL सर्वर डेमॉन को रोकना होगा और MySQL डेटा निर्देशिका में वर्तमान डेटा को हटाना होगा।

    /etc/init.d/mysql stop
    rm -R /var/lib/mysql/*
    
  2. निम्नलिखित उदाहरण में, MySQL डेटा निर्देशिका बैकअप /opt/database/backup-1266872202 में स्थित है। निर्देशिका। यदि आपने अपनी डीबीएमएस डेटा निर्देशिका का बैक अप लेते समय डेटा निर्देशिका का टैरबॉल बनाया है, तो आपको निम्न आदेशों के साथ प्रतिलिपि बनाने से पहले टैरबॉल से फ़ाइलों को निकालने की आवश्यकता होगी:

     cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/
     cd /var/lib/mysql
     tar xzvf mysqlBackup-1266872202.tar.gz
    
  3. इससे पहले कि हम MySQL डेटाबेस प्रक्रिया को फिर से शुरू कर सकें, हमें यह सुनिश्चित करना होगा कि अनुमतियाँ /var/lib/mysql/ पर सही तरीके से सेट हैं। निर्देशिका। इस उदाहरण के लिए, हम मानते हैं कि MySQL सर्वर डेमॉन उपयोगकर्ता के रूप में चलता है mysql समूह के साथ mysql . डेटा निर्देशिका पर अनुमतियों को बदलने के लिए निम्न आदेश जारी करें:

    chown -R mysql:mysql /var/lib/mysql
    
  4. mysql:mysql में बदलाव करें यदि आपका MySQL इंस्टेंस विभिन्न उपयोगकर्ता और समूह अनुमतियों के साथ चलता है तो इस कमांड का हिस्सा। इस तर्क का रूप है [user]:[group] . अंत में हम निम्नलिखित कमांड के साथ MySQL सर्वर डेमॉन शुरू कर सकते हैं:

    /etc/init.d/mysql start
    

    यदि आपको निम्न के जैसा कोई त्रुटि प्राप्त होती है:

    /usr/bin/mysqladmin: connect to server at 'localhost' failed
        error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
    

    आपको पुराना debian-sys-maint ढूंढना होगा उपयोगकर्ता का पासवर्ड /etc/mysql/debian.cnf . में और फिर नया debian-sys-maint बदलें इसके लिए उपयोगकर्ता का पासवर्ड। आप cat . का उपयोग करके पुराना पासवर्ड देख सकते हैं :

    cat /etc/mysql/debian.cnf | grep password
    

    पासवर्ड कॉपी करें (या याद रखें)। फिर आपको नया debian-sys-maint बदलना होगा उपयोगकर्ता का पासवर्ड। आप इसे MySQL रूट उपयोगकर्ता के रूप में लॉग इन करके और निम्न आदेश जारी करके कर सकते हैं (जहां पुराने debian-sys-maint का पासवर्ड है। उपयोगकर्ता):

    <टीडी क्लास =एलएनटीडी>
    1
    
    GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
  5. फिर आपको निम्न आदेश के साथ MySQL को पुनरारंभ करना होगा:

    /etc/init.d/mysql restart
    

MySQL सर्वर के सफलतापूर्वक शुरू होने के बाद, आप अपने MySQL DBMS का परीक्षण करना चाहेंगे और यह सुनिश्चित करेंगे कि सभी डेटाबेस और टेबल ठीक से बहाल हो जाएं। हम यह भी अनुशंसा करते हैं कि आप संभावित त्रुटियों के लिए अपने लॉग का ऑडिट करें। कुछ मामलों में डेटाबेस त्रुटियों के बावजूद MySQL सफलतापूर्वक प्रारंभ हो सकता है।

बैकअप से एकल डेटाबेस को पुनर्स्थापित करना

ऐसे मामलों में जहां आपने केवल एक डेटाबेस के लिए बैकअप बनाया है, या केवल एक डेटाबेस को पुनर्स्थापित करने की आवश्यकता है, बहाली प्रक्रिया कुछ अलग है।

बहाली प्रक्रिया शुरू करने से पहले, यह खंड मानता है कि आपका सिस्टम बिना किसी मौजूदा डेटाबेस या टेबल के MySQL का एक नया स्थापित संस्करण चला रहा है। यदि आपके पास अपने MySQL DBMS में पहले से ही डेटाबेस और टेबल हैं, तो कृपया आगे बढ़ने से पहले एक बैकअप बना लें क्योंकि यह प्रक्रिया वर्तमान MySQL डेटा को अधिलेखित कर देगी।

  1. mysql . का उपयोग करके एकल डेटाबेस को पुनर्स्थापित करने के लिए कमांड, पहले गंतव्य डेटाबेस तैयार करें। MySQL क्लाइंट का उपयोग करके अपने (नए) MySQL डेटाबेस सर्वर में लॉग इन करें:

    mysql -u root -p -h localhost
    
  2. आपको रूट MySQL उपयोगकर्ता के पासवर्ड के लिए कहा जाएगा। आपके द्वारा सही क्रेडेंशियल प्रदान करने के बाद, आपको गंतव्य डेटाबेस बनाना होगा। इस मामले में, customer डेटाबेस को पुनर्स्थापित किया जाएगा:

    <टीडी क्लास =एलएनटीडी>
    1
    
    CREATE DATABASE customer;
  3. जैसा कि सभी MySQL कथनों के साथ होता है, अंतिम सेमी-कोलन (उदा. ;) को न छोड़ें ) प्रत्येक आदेश के समापन पर। आपके परिनियोजन के आधार पर, आपको एक नया MySQL उपयोगकर्ता बनाने या नए बनाए गए डेटाबेस तक पहुँच के साथ पिछले उपयोगकर्ता को फिर से बनाने की आवश्यकता हो सकती है। एक नया MySQL उपयोगकर्ता बनाने का आदेश निम्न रूप लेता है:

    <टीडी क्लास =एलएनटीडी>
    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  4. अगले उदाहरण में, हम customeradmin . नाम का एक यूजर बनाएंगे :

    <टीडी क्लास =एलएनटीडी>
    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  5. अब हम देंगे customeradmin customer . तक पहुंचने के विशेषाधिकार डेटाबेस। किसी विशिष्ट उपयोगकर्ता के लिए डेटाबेस को विशेषाधिकार देने का आदेश निम्नलिखित रूप लेता है:

    <टीडी क्लास =एलएनटीडी>
    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
  6. निम्नलिखित उदाहरण के प्रयोजनों के लिए, हम customeradmin देंगे customer . तक पूर्ण पहुंच डेटाबेस। MySQL क्लाइंट में निम्न कमांड जारी करें:

    <टीडी क्लास =एलएनटीडी>
    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  7. आपको अपने परिनियोजन की मांगों के आधार पर भिन्न पहुँच अनुदान निर्दिष्ट करने की आवश्यकता हो सकती है। MySQL के GRANT स्टेटमेंट के लिए आधिकारिक दस्तावेज़ देखें। एक बार गंतव्य डेटाबेस और MySQL उपयोगकर्ता बन जाने के बाद, आप निम्न आदेश के साथ MySQL क्लाइंट को बंद कर सकते हैं:

     quit
    
  8. अब आप mysql . का उपयोग कर सकते हैं अपनी SQL फ़ाइल को पुनर्स्थापित करने के लिए आदेश। इस आदेश का रूप निम्न के जैसा होता है:

     mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
    

निम्नलिखित उदाहरण में, हम customer . को पुनर्स्थापित करेंगे customerBackup.sql . नामक SQL बैकअप फ़ाइल से डेटाबेस (< . पर विशेष ध्यान दें इस कमांड में सिंबल):

mysql -u root -p -h localhost customer < customerBackup.sql

आपको रूट MySQL उपयोगकर्ता के पासवर्ड के लिए कहा जाएगा। एक बार सही क्रेडेंशियल्स की आपूर्ति के बाद, बहाली की प्रक्रिया शुरू हो जाएगी। इस ऑपरेशन की अवधि आपके सिस्टम के लोड और डेटाबेस के आकार पर निर्भर करती है जिसे आप पुनर्स्थापित कर रहे हैं। यह कुछ सेकंड में पूरा हो सकता है, या इसमें कई घंटे लग सकते हैं।

बैकअप से सिंगल टेबल को रिस्टोर करना

विकल्प 1:MySQL और mysqldump द्वारा बनाए गए बैकअप का उपयोग करके एकल तालिका को पुनर्स्थापित करना

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

    mysql -u root -p -h localhost
    
  2. आपको रूट MySQL उपयोगकर्ता के पासवर्ड के लिए कहा जाएगा। आपके द्वारा सही क्रेडेंशियल प्रदान करने के बाद, आपको गंतव्य डेटाबेस बनाना होगा। इस उदाहरण के प्रयोजन के लिए हम customer बनाएंगे डेटाबेस।

    <टीडी क्लास =एलएनटीडी>
    1
    
    CREATE DATABASE customer;

    फिर mysql . से बाहर निकलें संकेत:

    quit
    

    यदि आपके पास पहले से ही आवश्यक डेटाबेस है, तो आप उपरोक्त चरण को सुरक्षित रूप से छोड़ सकते हैं। तालिका बहाली के साथ जारी रखने के लिए, निम्न रूप में एक आदेश जारी करें:

    mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
    
  3. निम्नलिखित उदाहरण के लिए, हम order को पुनर्स्थापित करेंगे मौजूदा customer . में तालिका customerOrderBackup.sql . नामक SQL बैकअप फ़ाइल से डेटाबेस . < . का उपयोग करने में बहुत सावधानी बरतें निम्नलिखित कमांड में ऑपरेटर:

    mysql -u root -p -h localhost customer < customerOrderBackup.sql
    

आपको रूट MySQL उपयोगकर्ता के पासवर्ड के लिए कहा जाएगा। एक बार सही क्रेडेंशियल्स की आपूर्ति के बाद, बहाली की प्रक्रिया शुरू हो जाएगी। इस ऑपरेशन की अवधि आपके सिस्टम के लोड और उस तालिका के आकार पर निर्भर करती है जिसे आप पुनर्स्थापित कर रहे हैं। यह कुछ सेकंड में पूरा हो सकता है, या इसमें कई घंटे लग सकते हैं।

विकल्प 2:एकल तालिका का उपयोग करके पुनर्स्थापित करना MySQL क्लाइंट और OUTFILE के साथ बनाए गए बैकअप के लिए INFILE स्टेटमेंट

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

    mysql -u root -p -h localhost
    
  2. आपको रूट MySQL उपयोगकर्ता के पासवर्ड के लिए कहा जाएगा। आपके द्वारा सही क्रेडेंशियल प्रदान करने के बाद, आपको गंतव्य डेटाबेस बनाना होगा। इस उदाहरण के प्रयोजन के लिए हम customer बनाएंगे डेटाबेस।

    <टीडी क्लास =एलएनटीडी>
    1
    
    CREATE DATABASE customer;

    फिर mysql . से बाहर निकलें संकेत:

    quit
    
  3. इस मामले में उपयोग किया गया डेटा बैकअप SELECT * INTO OUTFILE 'backupFile.sql' FROM tableName का उपयोग करके बनाया गया था आज्ञा। इस प्रकार का बैकअप केवल डेटा को ही बरकरार रखता है इसलिए तालिका संरचना को फिर से बनाया जाना चाहिए। MySQL क्लाइंट के भीतर से एकल तालिका को पुनर्स्थापित करने के लिए, आपको पहले गंतव्य डेटाबेस और तालिका तैयार करनी होगी। MySQL क्लाइंट का उपयोग करके अपने (नए) MySQL इंस्टेंस में लॉग इन करें:

    mysql -u root -p -h localhost
    
  4. आपको रूट MySQL उपयोगकर्ता के पासवर्ड के लिए कहा जाएगा। एक बार सही क्रेडेंशियल्स की आपूर्ति हो जाने के बाद, आपको गंतव्य डेटाबेस बनाना होगा। इस मामले में, हम customer बनाएंगे डेटाबेस। निम्नलिखित कथन जारी करें:

    <टीडी क्लास =एलएनटीडी>
    1
    
    CREATE DATABASE customer;
  5. याद रखें कि अर्धविराम (उदा. ; ) प्रत्येक कथन का अनुसरण करना आवश्यक है। अब आपको सही संरचना के साथ गंतव्य तालिका बनानी होगी। तालिका के फ़ील्ड के डेटा प्रकार को उस तालिका के डेटा प्रकारों को प्रतिबिंबित करना चाहिए जहां बैकअप उत्पन्न हुआ था। इस उदाहरण में, हम order . को पुनर्स्थापित करेंगे customer . की तालिका डेटाबेस। order . में 2 फ़ील्ड हैं टेबल, custNum डेटा प्रकार के साथ INT और orderName डेटा प्रकार के साथ VARCHAR(20); आपकी तालिका संरचना भिन्न होगी:

    1
    2
    
    USE customer;
    CREATE TABLE order (custNum INT, orderName VARCHAR(20));
  6. आपके परिनियोजन के आधार पर, आपको एक नया MySQL उपयोगकर्ता बनाने या नए बनाए गए डेटाबेस तक पहुँच के साथ पिछले उपयोगकर्ता को फिर से बनाने की आवश्यकता हो सकती है। एक नया MySQL उपयोगकर्ता बनाने का आदेश निम्न रूप लेता है:

    <टीडी क्लास =एलएनटीडी>
    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  7. अगले उदाहरण में, हम customeradmin . नाम का एक यूजर बनाएंगे :

    <टीडी क्लास =एलएनटीडी>
    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  8. अब हम देंगे customeradmin customer . तक पहुंचने के विशेषाधिकार डेटाबेस। किसी विशिष्ट उपयोगकर्ता के लिए डेटाबेस को विशेषाधिकार देने का आदेश निम्नलिखित रूप लेता है:

    <टीडी क्लास =एलएनटीडी>
    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'

    निम्नलिखित उदाहरण के प्रयोजनों के लिए, हम customeradmin देंगे customer . तक पूर्ण पहुंच डेटाबेस। MySQL क्लाइंट में निम्न कमांड जारी करें:

    <टीडी क्लास =एलएनटीडी>
    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  9. आपको अपनी तैनाती की मांगों के आधार पर अलग-अलग पहुंच अनुदान निर्दिष्ट करने की आवश्यकता हो सकती है। MySQL के GRANT स्टेटमेंट के लिए आधिकारिक दस्तावेज़ देखें। एक बार तालिका और उपयोगकर्ता बन जाने के बाद, हम LOAD DATA का उपयोग करके बैकअप फ़ाइल से बैकअप डेटा आयात कर सकते हैं। आज्ञा। सिंटैक्स निम्न के जैसा होता है:

    1
    
    LOAD DATA INFILE '[filename]' INTO TABLE [tableName];

    निम्नलिखित उदाहरण में, हम customerOrderBackup.sql नामक फ़ाइल से तालिका से डेटा को पुनर्स्थापित करेंगे। . जब MySQL क्लाइंट को INFILE . के बाद पथ और फ़ाइल नाम दिया जाता है , यह उस फ़ाइल के लिए MySQL डेटा निर्देशिका में दिखता है। अगर फ़ाइल का नाम customerOrderBackup.sql . है was given, the path would be /var/lib/mysql/customerOrderBackup.sql . Ensure that the file you are trying to restore from exists, especially if MySQL generates File not found errors.

  10. To import the data from the customerOrderBackup.sql file located in /var/lib/mysql/ , issue the following command:

    1
    
    LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;

    This process can take anywhere from a few seconds to many hours depending on the size of your table. The duration of this operation depends on your system’s load and the size of the table that you are restoring. It may complete in a few seconds, or it may take many hours. After you have verified that your data was imported successfully, you can log out:

    quit
    

अधिक जानकारी

आप इस विषय पर अतिरिक्त जानकारी के लिए निम्नलिखित संसाधनों से परामर्श करना चाह सकते हैं। हालांकि ये इस उम्मीद में प्रदान किए जाते हैं कि वे उपयोगी होंगे, कृपया ध्यान दें कि हम बाहरी रूप से होस्ट की गई सामग्री की सटीकता या समयबद्धता की पुष्टि नहीं कर सकते।

  • The Official MySQL Web Site
  • MySQL Database Backup Methods page
  • mysqldump Manual Page
  • Schedule Tasks With Cron
  • MySQL’s Grant Statement, Official Documentation

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे पता चलेगा कि MySQLnd सक्रिय ड्राइवर है?

  2. किसी टेबल/टेबल पर विदेशी कुंजियों की दोबारा जांच करने के लिए InnoDB को बाध्य करें?

  3. MySQL में डुप्लिकेट रिकॉर्ड खोजें

  4. MySQL में एकाधिक तालिकाओं से कैसे हटाएं?

  5. MySQL इनर जॉइन क्वेरी मल्टीपल टेबल्स