Mysql एक फ़ाइल के लिए वर्तमान विन्यास निर्यात करें


11

हमने अपनी my.cnf फ़ाइल खो दी और सोच रहे थे कि क्या वर्तमान में चल रहे mysql उदाहरण से कॉपी निर्यात करने का कोई तरीका है।

धन्यवाद!

जवाबों:


16

तीन (3) विकल्प

विकल्प 1: mysql क्लाइंट के भीतर से

mysql -uroot -A -e"SHOW GLOBAL VARIABLES;" > MySQLCurrentSettings.txt

यह टेक्स्ट फ़ाइल में सभी विकल्पों को कैप्चर करेगा।

विकल्प 2: लिनक्स कमांड लाइन से

ps -ef | grep mysqld | grep -v grep

यह विकल्प दिखाएगा mysqld mysqld_safe के सेट से शुरू हुआ

विकल्प 3: सर्वर से सीधे पूछें

mysqld --help --verbose

'Mysqld --help --verbose' डिस्प्ले के निचले भाग में, आप वर्तमान सेटिंग्स mysqld को my.cnf से लोड करेंगे या डिफ़ॉल्ट रूप से देखेंगे।


-1 क्षमा करें, लेकिन इसका कोई मतलब नहीं है। क्यों आप किसी पाठ फ़ाइल में SHOW VARIABLES डंप कर रहे हैं, फिर प्रक्रिया सूची को greping और इसके परिणामों के साथ कुछ भी नहीं कर रहे हैं, फिर कह रही है कि mysqld को सहायता ध्वज पढ़ें?
Coops

@ कूप्स - वे तीन अलग-अलग चीजें हैं। पहला पाठ फ़ाइल में SHOW VARIABLES को कैप्चर करता है। दूसरा आपको यह देखने देता है कि mysql के स्टार्टअप पर /etc/init.d/mysql द्वारा क्या विकल्प निर्दिष्ट किए गए हैं। तीसरा आपको डिस्प्ले के निचले आधे हिस्से में देखने देता है कि mysqld वर्तमान में किसके साथ काम कर रहा है। यह इन डिस्प्ले से /etc/my.cnf में उन विकल्पों को सेट करने के लेग कार्य को करने के लिए samspot पर निर्भर है। क्या मुझे स्वचालित / पुन: व्यवस्थित करने के लिए कुछ लिखना चाहिए /etc/my.cnf?
रोलैंडमाइसीडीडीबीए

आपकी आरंभिक पंक्ति "निम्नलिखित में से सभी करें" आपके प्रश्न का उत्तर प्राप्त करने के लिए चरण-दर-चरण मार्गदर्शिका प्रदान करने का सुझाव देती है। आप यह भी नहीं समझाते हैं कि प्रत्येक चरण क्या करता है, या यह प्रश्न का उत्तर कैसे देता है, भ्रम में जोड़ देता है! :-)
कोट

जिस तरह से मैंने अपना जवाब मूल रूप से लिखा था, उसके कारण किसी भी भ्रम के लिए क्षमा करें।
रोलैंडमाइसीडीडीबीए

भले ही my.cnf को पुनर्जीवित करना सबसे अच्छा मामला होगा (मुझे उम्मीद थी कि mysql ऐसा कर सकता है), यह हमारे लिए ठीक होने के लिए वास्तव में बहुत अच्छी जानकारी है। मैंने इस जानकारी के लिए googling की कोशिश की थी, लेकिन सभी मुझे मिल सकते थे डेटाबेस का समर्थन करने के बारे में लेख। धन्यवाद!
samspot

3

ये निर्देश स्टॉक मारीडब पर सेंटोस 7.1 पर हैं।

एक मशीन की वर्तमान सेटिंग्स को एक नए इंस्टॉलेशन, वर्तमान या भविष्य में बैकअप या दोहराने के लिए इस प्रकार है।

जिस मशीन से हम सेटिंग्स कॉपी करना चाहते हैं, उस पर हम चल सकते हैं:

/usr/libexec/mysqld --help --verbose > mysql_current_settings.txt

किसी अन्य मशीन पर, हम mariadb- सर्वर स्थापित कर सकते हैं और चला सकते हैं:

/usr/libexec/mysqld --help --verbose > mysql_default_settings.txt

फिर हम दोनों फाइलों को एक निर्देशिका में रखते हैं, जो इस उदाहरण में "/ a /" है।

फिर हम चलाते हैं:

comm -3 <(sort /a/mysql_current_settings.txt) <(sort /a/mysql_default_settings.txt)

यदि कोई आउटपुट नहीं है, तो दो फाइलें समान हैं। जिसका अर्थ है कि दोनों मशीनों पर सभी सेटिंग्स, उनके डिफ़ॉल्ट पर हैं।

यदि कुछ आउटपुट है, तो कुछ लाइनों को इंडेंट नहीं किया जाएगा, जबकि कुछ लाइनों को इंडेंट किया जाएगा।

गैर-इंडेंटेड लाइनें केवल पहली फ़ाइल में मौजूद हैं, जो यहां /a/mysql_current_settings.txt है।

इंडेंटेंड लाइनें केवल दूसरी फ़ाइल में मौजूद हैं, जो यहाँ /a/mysql_default_settline.txt है।

अब हम सभी सेटिंग्स को जानते हैं, कुछ सेटिंग्स को छोड़कर जो कमांड लाइन में सेट की गई हैं जो mysqld शुरू हुई हैं। ये सेटिंग्स /etc/my.cnf, या /etc/my.cnf.d/* फ़ाइलों, या एक कस्टम स्क्रिप्ट, या एक उपनाम, आदि से आ सकती हैं। किसी भी मामले में, हम उन्हें निम्न आदेश के साथ देख सकते हैं:

ps -ef | grep mysqld

अब हम बहुत कम सेटिंग्स जानते हैं कि हमें पुराने के रूप में कॉन्फ़िगर करने के लिए एक नई स्थापना पर बदलना होगा।


यहां कुछ अन्य विवरणों का पालन करें।

सेंटोस 7.1 पर, निम्न कमांड सभी मौजूदा सेटिंग्स को दिखाती है, कुछ सेटिंग्स को छोड़कर जो कमांड लाइन में सेट होती हैं जो mysqld शुरू हुई थीं:

/usr/libexec/mysqld --help --verbose

कुल में, यह दिखाता है:

पहले भाग में, सेटिंग्स जिसे हम "mysqld" के बाद पहले पैरामीटर के रूप में उपयोग कर सकते हैं जब हम इसे शुरू करते हैं;

दूसरे भाग में, संकलन समय पर सेट किया गया;

तीसरे भाग में, वर्तमान सेटिंग्स।

भले ही इसके आउटपुट की अंतिम पंक्ति कहती है: यह देखने के लिए कि एक रनिंग MySQL सर्वर किन मूल्यों का उपयोग कर रहा है, टाइप करें:

    mysqladmin variables -uroot -p

यदि हम इसे /etc/my.cnf में बदलते हैं और mysql को पुनरारंभ करते हैं, तो भी वह आदेश प्रदर्शित नहीं करता है।

साथ ही निम्न आदेश कई सेटिंग्स दिखाता है लेकिन "बाइंड-एड्रेस" नहीं:

mysql -uroot -p -e"SHOW VARIABLES;"

ध्यान दें कि, सेंटोस 7.1 पर, mysqld $ PATH में नहीं है।


2

वर्तमान my.cnf उत्पन्न करने के लिए मेरा पसंदीदा तरीका है:

{ echo -e "# MYSQL VARIABLES {{{1\n##\n# MYSQL `mysql -V|sed 's,^.*\(V.*\)\, for.*,\1,'` - By: `logname`@`hostname -f` on `date +%c`\n##"; for l in {a..z}; do echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" | sed 's,\t,^= ,' | column -ts^ | tr "\n" '@' | eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'") | eval $(echo "sed '" "s,@\(innodb_"{a..z}{a..z}"\),\n\n\1,;" "'") | tr '@' "\n" | sed 's,^,# ,g'; done; echo -e "#\n##\n# MYSQL VARIABLES }}}1"; } | tee ~/mysql-variables.log

हालांकि, यह मैक ओएस एक्स के लिए मज़बूती से काम नहीं करता है।

यह आपके my.cnf में आयात करने के लिए तैयार एक साफ चर लॉग आउटपुट करेगा।

मूल स्रोत: http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html


कुछ नोट: 1. bsdmainutils को स्थापित करने की आवश्यकता है। चेतावनी: यह mysql क्लाइंट का संस्करण लिखता है, सर्वर नहीं
Junel 21'16

सर्वर संस्करण के लिए कमांड है mysqld -V|sed 's,^.*\(V.*\)\ for.*,\1,'। सुनिश्चित नहीं है कि यह मायने रखता है क्योंकि मुझे लगता है कि क्लाइंट और सर्वर दोनों एक साथ स्थापित हैं। का उद्देश्य क्या है {{{1और 1}}}?
18
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.