2012-05-25 17 views
10

मेरी कंपनी में हम कभी-कभी बड़े ग्राहक MySQL डेटाबेस (40GB +) आयात करते हैं जो हमारे डेवलपर मशीनों पर लोड होने के लिए एक दिन का समय ले सकता है। जब हम पृष्ठभूमि में किए गए इस लोड समय को स्वीकार करते हैं, तो आयात के खत्म होने पर अनुमान लगाने की कोई ठोस क्षमता नहीं है। यह हमें इस पर कार्य करने के लिए उचित समय निर्धारित करने से रोकता है। यह केबल लड़के को दिखाने के लिए इंतजार कर रहा है।मेरे MySQL डंप का आयात कितना दूर है?

अभी मेरी सबसे अच्छी रणनीति एक त्वरित show tables कमांड है यह देखने के लिए कि तालिका का प्रतिशत कितना लोड किया गया है। हालांकि, चूंकि टेबल आकार एक दूसरे के साथ और प्रत्येक ग्राहक के साथ काफी भिन्न होते हैं, यह विश्वसनीय के करीब भी नहीं है।

क्या किसी के पास एक अच्छी तकनीक या उपकरण है जिसका उपयोग एक MySQL आयात के साथ कितना दूर विश्वसनीय प्रतिशत प्राप्त करने के लिए किया जा सकता है?

उत्तर

15

आप डंप को mysql पर पाइप करके pv कमांड के साथ कर सकते हैं।

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME 

यह आपको आईओ थ्रूपुट के आधार पर आयात प्रगति के दौरान एक प्रगति पट्टी दिखाएगा। (जैसा कि here देखा गया है)

+3

हाँ:

एक बहुत ही साधारण उदाहरण आप एक विचार देने के लिए! उत्तम! यही वह है जिसकी तलाश में मैं हूं! विंडोज उपयोगकर्ताओं के लिए चेतावनी का शब्द जो यहां ठोकरें हैं: सिग्विन में जीयूआई इंस्टॉलर में 'पीवी' के लिए मॉड्यूल नहीं है, इसलिए मैंने यहां दिशानिर्देशों का उपयोग किया: http://stackoverflow.com/q/504204 – Technetium

1

हेइडीएसक्ल आपको बताएगा कि अब तक कितने जीबी लोड हो चुके हैं, जो यह पता लगाने की कोशिश कर रहा है कि अभी भी कितना लोड होना चाहिए।

1

आप स्रोत डेटाबेस पर show processlist भी कर सकते हैं यह देखने के लिए कि कितनी दूर (स्वत: वृद्धि आईडी द्वारा) निर्यात की एक विशिष्ट तालिका में है। एरिक एक अच्छा मुद्दा बनाता है कि आप स्रोत के आकार की तुलना में डेटाबेस डेटा निर्देशिका के आकार की निगरानी कर सकते हैं।

कुछ मुझे तेजी से डंप/आयात में उपयोगी पाया गया है, इसे टेबल द्वारा करना है और फिर एक साथ कई mysqldumps को अनिवार्य रूप से अपनी प्रक्रिया को बहु-थ्रेडिंग करना है। मैं आमतौर पर एक समय में लगभग 4 अलग डंप/पुनर्स्थापना करता था। इष्टतम राशि आपके हार्डवेयर और डिस्क क्षमताओं पर निर्भर करेगी।

mysqldump dbname table1 table2 table3 | mysql -h host & 
mysqldump dbname table4 table5 table6 | mysql -h host & 
mysqldump dbname table7 table8 table9 | mysql -h host & 
+0

यह बहु -प्रचारित दृष्टिकोण दिलचस्प है। लगभग कुल आयात समय में कमी कितनी बड़ी है? मुझे लगा कि ड्राइव पहले ही आई/ओ बाध्य था (ये एसएसडी पर नहीं जा रहे हैं) इसलिए मैंने इसे वास्तव में एक विकल्प के रूप में नहीं माना। – Technetium

+1

यह आपकी डिस्क पर निर्भर करता है। MySQL केवल एक ही प्रक्रिया का उपयोग करेगा, इसलिए यदि आपके पास एकाधिक प्रोसेसर हैं तो आप इस तरह अधिक कोर का उपयोग कर सकते हैं। शीर्ष पर चलाएं और देखें कि MySQL थ्रेड में इसका CPU 100% है या नहीं। तो आप सबसे अधिक संभावना सीपीयू बाध्य हैं। यह आपके मीठे स्थान को खोजने के लिए कुछ प्रयोग करेगा, लेकिन मुझे लगता है कि 2 प्रक्रिया आपके समय लगभग 1/2 होगी। – sreimer

संबंधित मुद्दे