क्या mysqldump कमांड उन सभी विचारों का भी बैकअप लेगा जो DB में मौजूद हैं या इसके लिए कोई विशेष कमांड है?


10

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

कृपया मुझे एक उत्तर दें। कोई भी मदद बहुत ही सराहनीय होगी।

जवाबों:


9

डंपिंग विचारों के लिए कोई विशिष्ट विकल्प नहीं है।

आप निम्नलिखित की कोशिश कर सकते हैं:

mysqldump -h... -u... -p... --all-databases --routines --triggers --no-data > /root/MySQLDBSchema.sql
grep "CREATE ALGORITHM" /root/MySQLDBSchema.sql

आपको विचारों को देखने में सक्षम होना चाहिए। यह इंगित करता है कि जब आप डेटाबेस डंप करते हैं, तो दृश्य इसके साथ आता है।

एक और स्टंट जो आप केवल विचारों को प्राप्त करने के लिए कर सकते हैं, यह है:

mysql -uroot -prootpass AN -e"select concat('SHOW CREATE VIEW ',table_schema,'.',table_name,';') from information_schema.views" | sed 's/;/\\G/g' | mysql --uroot -prootpass > /root/MySQLDBViews.sql

कोशिश करो !!!


इस तरह के व्याख्यात्मक उत्तर के लिए बहुत बहुत धन्यवाद। समस्या यह है, मेरे डेटाबेस बहुत बड़े हैं इसलिए मैं एक समय में एक को कॉपी करने की योजना बना रहा हूं। इस सब गड़बड़ में मुझे 'विचारों' को कॉपी करने की भी आवश्यकता है इसलिए मैं --all-database कमांड का उपयोग नहीं कर सकता। कृपया मैसकल डीबी सर्वर से विचारों को कॉपी करने का एक तरीका सुझाएं।
विन्नी

इसलिए, उपयोग करने के बजाय --all-databases, इच्छित डेटाबेस निर्दिष्ट करें।
डेरेक डाउनी

1

इसके लिए सबसे अच्छा उत्तर शायद olliiiver द्वारा यह एक है जिसे मैंने थोड़ा संशोधित किया है। यह विशेष रूप से ड्रॉप टेबल क्वेरी और सिस्टम में हर दृश्य के लिए व्यू क्वेरी बनाने या बदलने के लिए, बिना किसी टेबल के साथ गड़बड़ करने के लिए निर्यात करता है। ड्रॉप टेबल क्वेरी अक्सर महत्वपूर्ण होती है, क्योंकि mysqldump स्पष्ट रूप से तालिकाओं के रूप में विचारों को फिर से बनाना पसंद करता है जब तक कि आप हर दृश्य को अपने --ignore-table पैरामीटर में शामिल न करें, जो कि कष्टप्रद होगा। यह INFORMATION_SCHEMA का उपयोग करता है।

mysql --skip-column-names --batch \
  -e "SELECT CONCAT('DROP TABLE IF EXISTS ', TABLE_SCHEMA, '.', TABLE_NAME, \
  '; CREATE OR REPLACE VIEW ', TABLE_SCHEMA, '.', TABLE_NAME, ' AS ', \
  VIEW_DEFINITION, '; ') AS q FROM INFORMATION_SCHEMA.VIEWS"

यदि आप कुछ इस तरह से शेल स्क्रिप्ट में बदलना चाहते हैं, तो मैं --defaults-extra-file = CREDSFILENAME पैरामीटर का उपयोग करने की भी सलाह देता हूं, ताकि आपको स्क्रिप्ट में उपयोगकर्ता / पास को निर्दिष्ट करने की आवश्यकता न हो।

क्रेडेंशियल फ़ाइल इस तरह दिखती है:

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