Mysqldump ट्रिगर्स और प्रक्रियाओं को डंप कर सकता है?


10

क्या मायस्कल्डम्प बनाने का कोई तरीका है जो एक निर्दिष्ट डीबी से सभी ट्रिगर और प्रक्रियाओं को बचाएगा?

कुछ समय पहले मैंने पढ़ा कि mysqldumpइससे मेरे ट्रिगर्स भी बचेंगे, लेकिन यह ऐसा नहीं दिखता। मेरा दूसरा संबंधित प्रश्न यह है कि यदि ट्रिगर मौजूद है तो मैं एक sql फ़ाइल में कैसे जांच कर सकता हूं?

जवाबों:


9

मैं सामान्य रूप से उन तालिकाओं से अलग नहीं होता, जिनके लिए वे अभिप्रेत थे। मैं इस तरह से डंप करता हूं:

mysqldump -u... -p... --no-data --routines --triggers dbname > DBSchema.sql

इस तरह दिनचर्या और ट्रिगर की उपस्थिति के लिए जाँच करें:

SELECT COUNT(1) FROM mysql.proc;

SELECT COUNT(1) FROM information_schema.triggers;

SELECT * FROM information_schema.triggers\G

यदि आप इसे MySQL इंस्टेंस में सभी DBs में लाना चाहते हैं, तो यह करें:

mysql -u... -p... -A -N -e"SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','mysql')" > /tmp/dblist.txt
for DB in `cat /tmp/dblist.txt`
do
    mysqldump -u... -p... --no-data --no-create-info --routines dbname > ${DB}-routines.sql
    mysqldump -u... -p... --no-data --triggers dbname > ${DB}-schema-triggers.sql
done

इस तरह, संग्रहीत कार्यविधियाँ डीबी के लिए एक रूटीन डंप में जाती हैं, जबकि स्कीमा और ट्रिगर्स दूसरे डंप में जाते हैं।


ट्रोलर्स / प्रक्रियाओं को डंप करने के तरीके पर @dole रोलैंडो का अधिकार। यदि आप देखना चाहते हैं कि क्या वे एक sql फ़ाइल में मौजूद हैं, तो इसे खोलें और 'CREATE TRIGGER' कॉल खोजें। यदि * निक्स में,grep 'CREATE TRIGGER'
डेरेक डाउनी

@RolandoMySQLDBA, क्या --triggersडिफ़ॉल्ट रूप से डंप नहीं किया गया है? --no-data --routines --triggersबनाम के बीच अंतर क्या होगा --no-data --routines?
पचेरियर

1
@ स्पेसर ऐसी परिस्थितियाँ हैं जहाँ मुझे ट्रिगर नहीं चाहिए थे और मैं --skip-triggersऐसे मौकों पर इस्तेमाल करूँगा (जैसे कि उन स्लेव्स को सेट करना, जिन्हें ट्रिगर्स की ज़रूरत नहीं थी)। विकल्प छोड़ने की संभावना के लिए अपने आप को एक निरंतर अनुस्मारक के रूप में, मैं हमेशा कुछ झंडे का उपयोग mysqldumps ( --routines, --triggers) में करता हूं , भले ही वे डिफ़ॉल्ट हों। तो, यह सिर्फ एक व्यक्तिगत प्राथमिकता है। यदि आपको विश्वास है कि डिफ़ॉल्ट सेटिंग संस्करण से संस्करण तक डिफ़ॉल्ट रहेगी और एडहॉक स्थितियों से कभी नहीं निपटेगी, तो आप mysqldumps को आवश्यकतानुसार व्यक्त करते हैं जब तक कि mysqldump आपके लिए सही न हो जाए।
रोलैंडमाइसीडीडीबीए

@RolandoMySQLDBA - A -N क्या करते हैं?
मोंटीप्यथॉन

मैंने DROP ट्रिगर कथनों को पूर्व निर्धारित करने के लिए नियमित अभिव्यक्तियों का उपयोग किया है: इसे बदलें: (\ / * \! 50003 सृजित * \ / \ / * \! 50017 DEFINER \ = some_text_here * \ / \ / * \? 50003 TRIGGER (*?) ) इसके साथ: DROP TRIGGER / *! 50032 IF EXISTS * / $2?; \ N $ 1
अलेक्जेंड्रूसेरबन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.