ट्रिगर और प्रक्रियाओं के साथ MySQL डेटाबेस कैसे निर्यात करें?


83

.sqlअपने सभी ट्रिगर और प्रक्रियाओं के साथ एक MySQL डेटाबेस डंप ( फ़ाइल) कैसे बनाएं ?


Mysqldump कमांड में बस -R विकल्प जोड़ें।
दीपांशु जैन

जवाबों:


122

mysqldumpद्वारा इच्छा बैकअप डिफ़ॉल्ट सभी चलाता लेकिन नहीं संग्रहित प्रक्रियाओं / कार्य । इस व्यवहार को नियंत्रित करने वाले 2 mysqldump पैरामीटर हैं:

  • --routines - डिफ़ॉल्ट रूप से FALSE
  • --triggers - डिफ़ॉल्ट रूप से सही

इसलिए mysqldumpकमांड में, --routinesजैसे जोड़ें :

mysqldump <other mysqldump options> --routines > outputfile.sql

Mysqldump तर्कों के बारे में MySQL प्रलेखन देखें ।


मेरे पास MySQL "5.1.48-समुदाय" है, जो "mysqldump --routines --no-create-info -no-data --no-create-db --skip-opt> dipfile.sql;" लेकिन यह त्रुटि और त्रुटि दे रहा है "ERROR 1064 (42000): आपके SQL सिंटैक्स में एक त्रुटि है; उस मैनुअल की जांच करें जो 'MySQL सर्वर वर्जन से मेल खाती है, जो कि' mysql डम्प - आउटआउट्स 'के पास उपयोग करने के लिए सही सिंटैक्स के लिए है -create-info --no-data --no-create-db --skip-opt> dum 'at line 1 "। इसे कैसे हल करें? -
युगल

कमांड में जोड़ें "-p -uusername dbname", और आपको ";" की आवश्यकता नहीं है अंत में साइन इन करें
Haim Evgi

1
यह भी ध्यान रखें कि आपको MySQL कमांड-लाइन क्लाइंट या phpMyAdmin या अन्य क्वेरी टूल में शेल प्रॉम्प्ट पर mysqldump चलाना चाहिए।
बिल कार्विन

@ हाईईवीजी, आप -routinesइसके बजाय क्यों कहते हैं --routines?
पचेरियर

--routinesकेवल तभी काम करता है जब उपयोगकर्ता के पास mysql.procटेबल तक पर्याप्त पहुंच अधिकार हो । GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
रॉकी

20

हो सकता है कि यह MYSQL के विशेषज्ञ उपयोगकर्ताओं के लिए स्पष्ट हो, लेकिन मैंने कुछ समय बर्बाद किया, जबकि डिफ़ॉल्ट मूल्य जानने की कोशिश करने से फ़ंक्शंस निर्यात नहीं होंगे। इसलिए मैंने यहां इस बात का उल्लेख करने के लिए सोचा कि - ट्राउटाइन परम को इसे बनाने के लिए सही होने की जरूरत है।

mysqldump --routines=true -u <user> my_database > my_database.sql

1
आप का उपयोग करने की आवश्यकता नहीं है - routines = true। Sprocs को डिफ़ॉल्ट रूप से डंप नहीं किया जाता है। आपको बस स्वीकृत उत्तर में उदाहरण के अनुसार-routines को शामिल करना होगा।
23:13 पर 23:13

6

मैंने निम्नलिखित स्क्रिप्ट बनाई है और यह मेरे लिए ठीक काम किया है।

#! /bin/sh
cd $(dirname $0)
DB=$1
DBUSER=$2
DBPASSWD=$3
FILE=$DB-$(date +%F).sql
mysqldump --routines "--user=${DBUSER}"  --password=$DBPASSWD $DB > $PWD/$FILE
gzip $FILE
echo Created $PWD/$FILE*

और आप कमांड लाइन तर्कों का उपयोग करके स्क्रिप्ट को कॉल करते हैं।

backupdb.sh my_db dev_user dev_password

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