mysqldump बनाम mysqlpump


17

मैंने सिर्फ mysqlpump के बारे में सुना - ऐसा लगता है कि यह MySQL 5.7 के साथ जारी किया गया था, हालांकि MySQL 5.7 में अभी भी mysldldump शामिल है । वे दोनों बैकअप प्रोग्राम हैं, लेकिन क्या कोई मुख्य अंतर को संक्षेप में बता सकता है? क्या ऐसे परिदृश्य हैं जहाँ उनमें से एक बेहतर काम कर सकता है? क्या mysqldump को mysqlpump के लिए चरणबद्ध किया जाएगा?


इसका मतलब सिर्फ दो समान उपकरणों को नाम देना है जो लगभग समान हैं।
एरिक

@Erik लगता है जैसे कि यह एक "है पी arallel घ UMP " और यह कर सकते हैं पंप डेटा तेजी से .. लेकिन अन्यथा मैं सहमत हूँ।
javavalik

1
आपको MyDumper में भी रुचि हो सकती है । ऐसा प्रतीत होता है कि mysqlpump ने इससे कुछ विचारों को लिया है - बुरी बात नहीं है, क्योंकि इस परियोजना को एक वर्ष से अधिक समय नहीं हुआ है :-(
Vérace

मुझे कुछ प्रदर्शन परीक्षण देखने में दिलचस्पी होगी!
रयान फोली

XtradbBackup एक और गंभीर दावेदार है।
रिक जेम्स

जवाबों:


16

जब से मैं इस पर खुद शोध कर रहा हूं, यहां मुझे जो मिला है उसका सारांश है।

MySQL देव टीम के एक 2015 ब्लॉग पोस्ट के अनुसार , mysqlpump के मुख्य लाभ यह हैं कि यह डंपिंग को गति देने के लिए समानांतर में कई थ्रेड्स का उपयोग कर सकता है और यह mysqldump की पश्चगामी संगतता आवश्यकताओं को साझा नहीं करता है, जो आगे के लिए दरवाजा खोल सकता है। सुधार।

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

Giuseppe Maxia ने 2015 में mysqlpump के साथ खेला और डंपिंग गति को काफी छोटा पाया। उन्होंने ठीक से चयन करने की नई क्षमता की सराहना की कि कौन सी वस्तुएं डंप करें, लेकिन ध्यान दिया कि डंप को वापस लोड करना केवल एकल-थ्रेडेड किया जा सकता है और यह (mysqldump के विपरीत) डंप केवल उसी नाम के साथ डेटाबेस में लोड किए जा सकते हैं।


2
चेतावनी: mysqlpumpबंद स्रोत सॉफ़्टवेयर (अनिश्चित भविष्य) है। एक खुला स्रोत विकल्प mysqlpumpहै github.com/maxbube/mydumper mydumper
इवानोव

12

मैं इन दोनों उपयोगिताओं के बीच के अंतरों को भी देख रहा हूं, और @ नील के उत्तर में जो उल्लेख किया गया है, इसके अलावा , ऐसा लगता है कि mysqlpump में mysqldump की तुलना में कम विकल्प हैं , जैसे कि निम्नलिखित के लिए अनुमति नहीं है:

  • --compatible=
  • --tabऔर इसके संबंधित विकल्प:
    • --fields-terminated-by=
    • --fields-enclosed-by=
    • --fields-optionally-enclosed-by=
    • --fields-escaped-by=
    • --lines-terminated-by=
  • --quote-names
  • --add-drop-trigger
  • --allow-keywords
  • --apply-slave-statements
  • --comments
  • --compact
  • --compatible
  • --create-options
  • --delete-master-logs
  • --disable-keys
  • --dump-date
  • --dump-slave
  • --enable-cleartext-plugin
  • --flush-logs
  • --flush-privileges
  • --force
  • --ignore-error
  • --include-master-host-port
  • --lock-all-tables
  • --lock-tables
  • --master-data
  • --no-autocommit
  • --no-tablespaces
  • --opt
  • --order-by-primary
  • --pipe
  • --quick
  • --quote-names
  • --set-gtid-purged
  • --shared-memory-base-name
  • --skip-add-drop-table
  • --skip-add-locks
  • --skip-comments
  • --skip-compact
  • --skip-disable-keys
  • --skip-extended-insert
  • --skip-opt
  • --skip-quick
  • --skip-quote-names
  • --skip-triggers
  • --skip-tz-utc
  • --verbose
  • --where
  • --xml

दूसरी ओर, mysqlpump में निम्नलिखित विकल्प हैं जो mysqldump में उपलब्ध नहीं हैं

  • --compress-output
  • --default-parallelism
  • --defer-table-indexes
  • --exclude-databases=
  • --exclude-events=
  • --exclude-routines=
  • --exclude-triggers=
  • --exclude-users=
  • --include-events=
  • --include-routines=
  • --include-triggers=
  • --include-users=
  • --parallel-schemas=
  • --skip-definer
  • --users
  • --watch-progress

नाम या समान:

  • --no-dataमें डंप == --skip-dump-rowsमें पंप
  • --no-set-namesमें डंप में मौजूद नहीं है पंप है, लेकिन इसके पर्याय ---skip-set-charset - दोनों में मौजूद है
  • --ignore-table=में डंप ज्यादातर है --exclude-tables=में पंप को छोड़कर --exclude-tablesसभी तालिकाओं, अल्पविराम से अलग करके निर्दिष्ट कर सकते हैं, और (वाइल्डकार्ड वर्णों के लिए अनुमति देता है %और_ )
  • --tables में डंप ज्यादातर है --include-tables=में पंप को छोड़कर --include-tablesसभी तालिकाओं अल्पविराम के द्वारा अलग निर्दिष्ट कर सकते हैं, और वाइल्डकार्ड वर्णों (के लिए अनुमति देता है %और _)। इसके अलावा, --tablesओवरराइड करता है --databasesमें डंप है, जबकि --include-tables=में पंप नहीं करता है।
  • --databases दोनों मे डंप और पंप ज्यादातर है --include-databases=में पंप को छोड़कर --include-databasesसभी डेटाबेस अल्पविराम के द्वारा अलग निर्दिष्ट कर सकते हैं, और वाइल्डकार्ड वर्णों (के लिए अनुमति देता है %और _)।

3

यहाँ दोनों बैकअप टूल के बीच जो मैंने समझा था, उसका सारांश है।

मैनुअल पेज में दिए गए mysqldump की परिभाषा

Mysqldump क्लाइंट उपयोगिता तार्किक बैकअप निष्पादित करती है, जो मूल डेटाबेस ऑब्जेक्ट परिभाषा और तालिका डेटा को पुन: उत्पन्न करने के लिए निष्पादित किए जाने वाले SQL कथनों का एक सेट तैयार करती है। यह बैकअप के लिए एक या एक से अधिक MySQL डेटाबेस को डुबो देता है या किसी अन्य SQL सर्वर पर स्थानांतरित करता है। Mysqldump कमांड CSV, अन्य सीमांकित पाठ या XML प्रारूप में भी आउटपुट उत्पन्न कर सकता है।

मैसकल्डम्प का उपयोग करना बहुत आसान है और सिंटैक्स भी बहुत सरल है। जब हम इसे निष्पादित करते हैं, तो यह सभी पंक्तियों को SQL क्वेरी में परिवर्तित करता है और मानक आउटपुट में प्रिंट करता है। हम इस आउटपुट को एक आउटफाइल (>) या एक विकल्प - परिणाम-फ़ाइल का उपयोग करके पुनर्निर्देशित कर सकते हैं।

डिफ़ॉल्ट रूप से, mysqldump information_schema तालिकाओं को डंप नहीं करता है और यह कभी भी perform_schema नहीं लेता है। Mysqldump की बड़ी खामी यह है कि बैकअप लेते समय और पुनर्स्थापित करते समय वह केवल एक धागे का उपयोग करता है।

Myqlpump एक और उपयोगिता है जिसे MySQL 5.7 में Mysqldump के साथ तुलना करने पर कुछ और विशेषताओं के साथ पेश किया गया था

मैनुअल पेज में दिए गए mysqlpump की परिभाषा

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

प्रमुख विशेषताएं हैं

  • बैकअप को गति देने के लिए समानांतर प्रसंस्करण (बहु थ्रेडेड)

  • प्रगति संकेतक

  • उपयोगकर्ता खातों की डंपिंग (MySQL सिस्टम डेटाबेस के लिए आवेषण के रूप में नहीं, अनुदान बयान दें)

डिफ़ॉल्ट रूप से, mysqlpump सिस्टम डेटाबेस का बैकअप नहीं लेता है जैसे कि सूचना स्कीमा, प्रदर्शन स्कीमा, और कुछ MySQL सिस्टम टेबल जब तक कि यह स्पष्ट रूप से उल्लेख नहीं किया गया है।

इसके विकल्प भी हैं -include-database, –exclude-database, -include-table, –exclude-table प्रतिमान मिलान (%) के साथ।

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

सामान्य तौर पर, mysqlpump अपने काम को विखंडू में विभाजित करता है और प्रत्येक को एक बहु-थ्रेडेड कतार को सौंपा जाता है।

  • इस बहुस्तरीय कतार को N थ्रेड्स द्वारा संसाधित किया जाता है (डिफ़ॉल्ट रूप से यह 2 थ्रेड्स का उपयोग करता है)।

  • हम इस विकल्प का उपयोग करके कई थ्रेड्स को परिभाषित कर सकते हैं -डॉफ़्टल-समांतरवाद और -परेल-स्कीमा।

  • पुनर्स्थापना करते समय, यह एक एकल थ्रेड का उपयोग करता है जो mysqldump के समान है, इसमें समानांतर पुनर्स्थापना का अभाव है।

ऐड-ऑन के रूप में, हमारे पास एक और टूल है, जो बैकअप और रिस्टोरेशन (जहाँ mysqlpump और mysqldump में कमी है) को समानांतर बनाता है, जिसे mydumper और myloader कहा जाता है । विशाल डेटासेट को पुनर्स्थापित करते समय इसका बहुत उपयोग किया जाएगा।

आप इस ब्लॉग mysqldump बनाम mysqlpump बनाम mydumper में इन टूल के कुछ और विवरण और इसके उपयोगी विकल्प पा सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.