MySQL
Mysqldump का उपयोग करके बैकअप
खोज…
वाक्य - विन्यास
- mysqldump -u [उपयोगकर्ता नाम] -p [पासवर्ड] [अन्य विकल्प] db_name> डंपफाइलनाम / एसक्यूएल /// बैकअप एकल डेटाबेस के लिए
- mysqldump -u [उपयोगकर्ता नाम] -p [पासवर्ड] [अन्य विकल्प] db_name [tbl_name1 tbl_name2 tbl_name2 ...]> dipFileName.sql /// बैकअप एक या अधिक तालिकाओं के लिए
- mysqldump -u [उपयोगकर्ता नाम] -p [पासवर्ड] [अन्य विकल्प] - डेटाबेस डेटाबेस db_name1 db_name2 db_name3 ...> dipFileName.sql /// एक या एक से अधिक डेटाबेस बैकअप के लिए
- mysqldump -u [उपयोगकर्ता नाम] -p [पासवर्ड] [अन्य विकल्प] --all-डेटाबेस> डंपफाइलनेम / एसक्यूएल /// संपूर्ण MySQL सर्वर बैकअप के लिए
पैरामीटर
विकल्प | प्रभाव |
---|---|
- | # सर्वर लॉगिन विकल्प |
-h ( --host ) | होस्ट (आईपी पता या होस्टनाम) से कनेक्ट करने के लिए। डिफ़ॉल्ट है localhost ( 127.0.0.1 ) उदाहरण: -h localhost |
-u ( --user ) | MySQL उपयोगकर्ता |
-p ( --password ) | MySQL पासवर्ड। महत्वपूर्ण : -p का उपयोग करते समय, विकल्प और पासवर्ड के बीच एक स्थान नहीं होना चाहिए। उदाहरण: -pMyPassword |
- | # डंप विकल्प |
--add-drop-database | एक जोड़े DROP DATABASE बयान से पहले प्रत्येक CREATE DATABASE बयान। यदि आप सर्वर में डेटाबेस को बदलना चाहते हैं तो उपयोगी है। |
--add-drop-table | एक जोड़े DROP TABLE बयान से पहले प्रत्येक CREATE TABLE बयान। उपयोगी है यदि आप सर्वर में तालिकाओं को बदलना चाहते हैं। |
--no-create-db | डंप में CREATE DATABASE स्टेटमेंट को दबाएं। यह तब उपयोगी होता है जब आप यह सुनिश्चित कर लेते हैं कि आप उस डेटाबेस में पहले से मौजूद डंपिंग कर रहे हैं, जहां आप डंप को लोड करेंगे। |
-t ( --no-create-info ) | डंप में सभी CREATE TABLE बयानों को दबाएं। यह तब उपयोगी होता है जब आप केवल तालिका से डेटा डंप करना चाहते हैं और डंप फ़ाइल का उपयोग किसी अन्य डेटाबेस / सर्वर में समान तालिकाओं को पॉप्युलेट करने के लिए करेंगे। |
-d ( --no-data ) | तालिका जानकारी न लिखें। यह केवल CREATE TABLE स्टेटमेंट को डम्प करेगा। "टेम्पलेट" डेटाबेस बनाने के लिए उपयोगी |
-R (- --routines ) | डंप में संग्रहीत प्रक्रियाओं / कार्यों को शामिल करें। |
-K ( --disable-keys ) | डेटा डालने से पहले प्रत्येक तालिका के लिए कुंजियों को अक्षम करें, और डेटा डालने के बाद कुंजियों को सक्षम करें। यह गैर-अनन्य अनुक्रमित के साथ केवल MyISAM तालिकाओं में आवेषण को गति देता है। |
टिप्पणियों
mysqldump
ऑपरेशन का आउटपुट एक हल्की टिप्पणी वाली फ़ाइल है जिसमें अनुक्रमिक SQL कथन हैं जो MySQL उपयोगिताओं के संस्करण के साथ संगत हैं जो इसे उत्पन्न करने के लिए उपयोग किया गया था (पिछले संस्करणों के साथ संगतता पर ध्यान दिया गया था, लेकिन भविष्य के लिए कोई गारंटी नहीं है)। इस प्रकार, mysqldump
ed डेटाबेस की बहाली में उन कथनों का निष्पादन शामिल है। आम तौर पर, यह फ़ाइल
-
DROP
पहले निर्दिष्ट तालिका या दृश्य है - उस तालिका या दृश्य
CREATE
- डेटा के साथ डंप किए गए तालिकाओं के लिए (यानी
--no-data
विकल्प के बिना)- टेबल को
LOCK
-
INSERT
मूल तालिका से सभी पंक्तियों को एक कथन में लिखता है
- टेबल को
-
UNLOCK TABLES
- अन्य सभी तालिकाओं और विचारों के लिए उपरोक्त दोहराता है
-
DROP
पहले शामिल दिनचर्या है -
CREATE
कि दिनचर्या - अन्य सभी दिनचर्या के लिए समान दोहराता है
प्रत्येक तालिका के लिए CREATE
से पहले DROP
की उपस्थिति का अर्थ है कि यदि स्कीमा मौजूद है, तो वह खाली है या नहीं, इसकी बहाली के लिए mysqldump
फ़ाइल का उपयोग करने से उसमें डेटा पॉप्युलेट या अधिलेखित हो जाएगा।
डेटाबेस या टेबल का बैकअप बनाना
पूरे डेटाबेस का एक स्नैपशॉट बनाएँ:
mysqldump [options] db_name > filename.sql
कई डेटाबेस का एक स्नैपशॉट बनाएँ:
mysqldump [options] --databases db_name1 db_name2 ... > filename.sql
mysqldump [options] --all-databases > filename.sql
एक या अधिक तालिकाओं का स्नैपशॉट बनाएँ:
mysqldump [options] db_name table_name... > filename.sql
एक या अधिक तालिकाओं को छोड़कर एक स्नैपशॉट बनाएँ:
mysqldump [options] db_name --ignore-table=tbl1 --ignore-table=tbl2 ... > filename.sql
फ़ाइल एक्सटेंशन .sql
पूरी तरह से शैली का विषय है। कोई भी एक्सटेंशन काम करेगा।
उपयोगकर्ता नाम और पासवर्ड निर्दिष्ट करना
> mysqldump -u username -p [other options]
Enter password:
यदि आपको कमांड लाइन पर पासवर्ड निर्दिष्ट करने की आवश्यकता है (जैसे एक स्क्रिप्ट में), तो आप इसे बिना स्पेस के -p
विकल्प के बाद जोड़ सकते हैं:
> mysqldump -u username -ppassword [other options]
यदि आप पासवर्ड में रिक्त स्थान या विशेष वर्ण हैं, तो अपने शेल / सिस्टम के आधार पर भागने का उपयोग करना याद रखें।
वैकल्पिक रूप से विस्तारित रूप है:
> mysqldump --user=username --password=password [other options]
(सुरक्षा चिंताओं के कारण कमांडलाइन पर पासवर्ड निर्दिष्ट करना अनुशंसित नहीं है।)
डेटाबेस या टेबल का बैकअप बहाल करना
mysql [options] db_name < filename.sql
ध्यान दें कि:
-
db_name
को एक मौजूदा डेटाबेस होना चाहिए; - आपके प्रमाणीकृत उपयोगकर्ता के पास आपके
filename.sql
।filename.sql
अंदर सभी कमांड निष्पादित करने के लिए पर्याप्त विशेषाधिकार हैं; - फ़ाइल एक्सटेंशन
.sql
पूरी तरह से शैली का विषय है। कोई भी एक्सटेंशन काम करेगा। - यदि आप एक से डंप करने के लिए निर्दिष्ट कर सकते हैं, तो आप एक तालिका नाम निर्दिष्ट नहीं कर सकते। यह
filename.sql
भीतर किया जाना चाहिए।
वैकल्पिक रूप से, जब MySQL कमांड लाइन टूल में , आप स्रोत कमांड का उपयोग करके पुनर्स्थापित कर सकते हैं (या किसी अन्य स्क्रिप्ट को चला सकते हैं):
source filename.sql
या
\. filename.sql
एक दूरस्थ सर्वर से संपीड़न के साथ mysqldump
तेजी से हस्तांतरण के लिए तार पर संपीड़न का उपयोग करने के लिए, mysqldump
को --compress
विकल्प दें। उदाहरण:
mysqldump -h db.example.com -u username -p --compress dbname > dbname.sql
महत्वपूर्ण: यदि आप स्रोत db को लॉक नहीं करना चाहते हैं, तो आपको --lock-tables=false
भी शामिल करना चाहिए। लेकिन आपको इस तरह से आंतरिक रूप से सुसंगत db छवि नहीं मिल सकती है।
संपीड़ित फ़ाइल को सहेजने के लिए, आप gzip
पाइप कर सकते हैं।
mysqldump -h db.example.com -u username -p --compress dbname | gzip --stdout > dbname.sql.gz
एक gzipped mysqldump फ़ाइल को बिना स्पष्ट किए पुनर्स्थापित करें
gunzip -c dbname.sql.gz | mysql dbname -u username -p
नोट: -c
मतलब स्टडआउट के लिए आउटपुट लिखना है।
संपीड़न के साथ अमेज़ॅन एस 3 के लिए बैकअप प्रत्यक्ष
यदि आप एक बड़े MySql इंस्टालेशन का पूरा बैकअप लेना चाहते हैं और आपके पास पर्याप्त स्थानीय स्टोरेज नहीं है, तो आप इसे सीधे Amazon S3 बकेट में डंप और कंप्रेस कर सकते हैं। यह कमांड के हिस्से के रूप में DB पासवर्ड के बिना ऐसा करने के लिए एक अच्छा अभ्यास है:
mysqldump -u root -p --host=localhost --opt --skip-lock-tables --single-transaction \
--verbose --hex-blob --routines --triggers --all-databases |
gzip -9 | s3cmd put - s3://s3-bucket/db-server-name.sql.gz
आपको पासवर्ड के लिए संकेत दिया जाता है, जिसके बाद बैकअप शुरू होता है।
डेटा को एक MySQL सर्वर से दूसरे तक पहुंचाना
यदि आपको एक सर्वर से दूसरे सर्वर पर प्रतिलिपि बनाने की आवश्यकता है, तो आपके पास दो विकल्प हैं:
विकल्प 1:
- स्रोत सर्वर में डंप फ़ाइल संग्रहीत करें
- डंप फ़ाइल को अपने गंतव्य सर्वर पर कॉपी करें
- डंप फ़ाइल को अपने गंतव्य सर्वर में लोड करें
स्रोत सर्वर पर:
mysqldump [options] > dump.sql
गंतव्य सर्वर पर, डंप फ़ाइल की प्रतिलिपि बनाएँ और निष्पादित करें:
mysql [options] < dump.sql
विकल्प 2:
यदि गंतव्य सर्वर होस्ट सर्वर से कनेक्ट हो सकता है, तो आप डेटाबेस को एक सर्वर से दूसरे सर्वर पर कॉपी करने के लिए पाइपलाइन का उपयोग कर सकते हैं:
गंतव्य सर्वर पर
mysqldump [options to connect to the source server] | mysql [options]
इसी तरह, स्क्रिप्ट को स्रोत सर्वर पर चलाया जा सकता है, जो गंतव्य तक पहुंचाता है। या तो मामले में, यह विकल्प 1 की तुलना में काफी तेज होने की संभावना है।
संग्रहीत प्रक्रियाओं और कार्यों के साथ बैकअप डेटाबेस
डिफ़ॉल्ट रूप से संग्रहीत प्रक्रियाओं और कार्यों या mysqldump
द्वारा उत्पन्न नहीं होने पर, आपको पैरामीटर --routines
(or -R
) को जोड़ना होगा:
mysqldump -u username -p -R db_name > dump.sql
का उपयोग करते समय --routines
निर्माण और परिवर्तन समय टिकटों नहीं रखा जाता है, बजाय आप डंप और की सामग्री को फिर से लोड करना चाहिए mysql.proc
।