2010-03-25 10 views
6

मुझे पता है कि एक एसक्यूएल डंप एसक्यूएल स्टेटमेंट्स डालने की एक श्रृंखला है जो डेटाबेस के अंदर सभी रिकॉर्ड्स को प्रतिबिंबित करती है। लेकिन इसके लिए क्या उपयोग किया जाता है? हमें डेटाबेस रिकॉर्ड क्यों डंप करना चाहिए? क्या प्रत्येक डेटाबेस डंपिंग फ़ंक्शन का समर्थन करता है?एसक्यूएल-डंप के लिए क्या है?

उत्तर

14

कुछ हद तक अजीब बात यह है कि यह वास्तव में डेटाबेस का बैक अप लेने का सामान्य तरीका है। विभिन्न जटिल कारणों से फ़ाइलों को कॉपी करना जो वास्तव में डेटा धारण करते हैं, सामान्य बैकअप विधि नहीं है।

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

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

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

2

mysqldump एक या अधिक टेबल या डेटाबेस के लिए डेटा का SQL प्रतिनिधित्व प्रस्तुत करता है। चूंकि प्रारूप एसक्यूएल है, यह किसी भी अन्य MySQL सर्वर पर चलाएगा, भले ही आर्किटेक्चर या प्रमुख/मामूली संस्करण (जाहिर है, विचार 4.x आदि पर काम नहीं करेंगे, लेकिन यह ज्यादातर आगे संगत है)।

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

दो एसक्यूएल डंपिंग के लिए मुख्य उपयोग के मामलों रहे हैं:

  • डेटाबेस डेटा का बैक अप लिया। एसक्यूएल को एक खाली डेटाबेस सर्वर में ("वापस खेला") में पढ़ा जा सकता है और यह टेबल को फिर से बना देगा और पंक्तियों के साथ उन्हें पॉप्युलेट करेगा।
  • डेटा को किसी अन्य सर्वर पर माइग्रेट करना। मान लें कि आप MySQL 5.0 से 5.1 तक अपग्रेड कर रहे हैं। आपके पास दो मशीनें हैं आप 5.0 मशीन पर SQL डंप का उत्पादन करने के लिए mysqldump का उपयोग करते हैं, और इसे 5.1 में फ़ीड करते हैं।

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

आपने पूछा कि क्या अन्य डेटाबेस SQL ​​डंप कार्यक्षमता प्रदान करते हैं। जवाब लगभग सभी मामलों में हाँ है। PostgreSQL pg_dump प्रदान करता है, SQLite में .dump कमांड इत्यादि है।

संबंधित मुद्दे