.sqlअपने सभी ट्रिगर और प्रक्रियाओं के साथ एक MySQL डेटाबेस डंप ( फ़ाइल) कैसे बनाएं ?
जवाबों:
mysqldumpद्वारा इच्छा बैकअप डिफ़ॉल्ट सभी चलाता लेकिन नहीं संग्रहित प्रक्रियाओं / कार्य । इस व्यवहार को नियंत्रित करने वाले 2 mysqldump पैरामीटर हैं:
--routines - डिफ़ॉल्ट रूप से FALSE--triggers - डिफ़ॉल्ट रूप से सहीइसलिए mysqldumpकमांड में, --routinesजैसे जोड़ें :
mysqldump <other mysqldump options> --routines > outputfile.sql
Mysqldump तर्कों के बारे में MySQL प्रलेखन देखें ।
-routinesइसके बजाय क्यों कहते हैं --routines?
--routinesकेवल तभी काम करता है जब उपयोगकर्ता के पास mysql.procटेबल तक पर्याप्त पहुंच अधिकार हो । GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
हो सकता है कि यह MYSQL के विशेषज्ञ उपयोगकर्ताओं के लिए स्पष्ट हो, लेकिन मैंने कुछ समय बर्बाद किया, जबकि डिफ़ॉल्ट मूल्य जानने की कोशिश करने से फ़ंक्शंस निर्यात नहीं होंगे। इसलिए मैंने यहां इस बात का उल्लेख करने के लिए सोचा कि - ट्राउटाइन परम को इसे बनाने के लिए सही होने की जरूरत है।
mysqldump --routines=true -u <user> my_database > my_database.sql
मैंने निम्नलिखित स्क्रिप्ट बनाई है और यह मेरे लिए ठीक काम किया है।
#! /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