2011-06-02 13 views
5

यह प्रश्न शायद MySQL विशेषज्ञों और व्यवस्थापकों के लिए है जिन्होंने इस तरह के माइग्रेशन को पहले किया है।स्टोरेज इंजन से MySQL टेबल और डेटा ले जाएं MyISAM से InnoDB

मेरे पास MyISAM स्टोरेज इंजन पर 17 MySQL टेबल, ट्रिगर्स और संग्रहीत प्रक्रियाएं हैं। इन तालिकाओं में लगभग 8 एमआईबी डेटा संयुक्त है। चूंकि मैं अमेज़ॅन ईसी 2 और आरडीएस में एप्लिकेशन और डेटाबेस ले जा रहा हूं, इसलिए मैं सोच रहा था कि माईसाम से इनो डीबी तक टेबल माइग्रेट करते समय महत्वपूर्ण विचार क्या हैं।

मेरे द्वारा किए जा रहे कदम निम्नानुसार हैं।

  1. एडब्ल्यूएस आरडीएस पर सिस्टम टेबल्स माईसैम पर होना चाहिए ताकि उस पर कोई प्रतियोगिता न हो।
  2. उसी संरचना के साथ 17 टेबल बनाएं क्योंकि वे MyISAM पर मौजूद हैं और उन्हें आरडीएस इनो डीबी में बनाएं।
  3. MyISAM तालिकाओं से डेटा निर्यात करें और उन्हें इनओडीबी पर आरडीएस में बनाए गए नए टेबल में आयात करें।
  4. इनओडीबी डेटाबेस में ट्रिगर्स, संग्रहीत प्रक्रियाओं और कार्यों को बनाएँ।

जब मैं MySQL भंडारण इंजन मैं अनुभवी व्यवस्थापक की दृष्टि से जानना चाहता हूँ भर में इस तरह एक प्रवास के प्रमुख कारणों के बारे में पूछने के लिए कुछ स्पष्ट रूप से डेटा माइग्रेशन के दौरान डीबी स्तर पर का ध्यान रखा जाना आवश्यक है या इत्यादि ताकि डीबी इस तरह से व्यवहार करे और कोई ग्लिच न हो। मैं मुख्य रूप से चिंतित हूं क्योंकि मैंने पढ़ा है कि इनो डीबी और माईसाम के बफरिंग के तरीके, आई/ओ, सीपीयू और मेमोरी उपयोग अलग हैं।

मैं इस प्रक्रिया पर खुशी से आपके 2 सेंट स्वीकार करूंगा।

धन्यवाद।

* अद्यतन *

innodb_buffer_pool_size - {DBInstanceClassMemory * 3/4} यह क्या यह करने के लिए अभी सेट कर दिया जाता है।

मैं अन्य पैरामीटर भी देख रहा हूं। अगर आप किसी अन्य विशिष्ट पैरामीटर के लिए मान सेट देखना चाहते हैं तो मुझे बताएं।

उत्तर

2

MyISAM और InnoDB लेकिन मुख्य बिंदु यह है कि आप माइग्रेशन से पहले के बारे में पता होना चाहिए के बीच कई मतभेद हैं।, 1. डेटा बैकअप बस MyISAM में के रूप में 2. InnoDB काम नहीं करता है फ़ाइलों पर कॉपी करके नहीं किया जा सकता डिफ़ॉल्ट विकल्पों के साथ चलाए जाने पर एक अनुकूलित तरीके से, आपको अपनी आवश्यकताओं के अनुसार कॉन्फ़िगर करना और ट्यून करना होगा। 3. InnoDB में MyISAM जैसे संपीड़ित इंडेक्स नहीं हैं इसलिए यह अधिक स्थान ले जाएगा 4. InnoDB स्वचालित रूप से प्राथमिक कुंजी कॉलम को माध्यमिक कुंजी में जोड़ता है। इसलिए सुनिश्चित करें कि प्राथमिक कुंजी कॉलम बड़े नहीं हैं।

उस माइग्रेशन के अलावा आसान होना चाहिए। 1. माईसाम के समान संरचनाओं वाली टेबल बनाएं लेकिन केवल इंजन के साथ ही InnoDB में बदल दिया गया है। 2. MyISAM तालिका से डेटा डंप करें 3. स्टार्ट ट्रांज़ेक्शन और COMMIT के बीच आयात को लपेटने वाले इनो डीबी इंजन में प्राथमिक कुंजी ऑर्डर में डेटा आयात करें। यह डेटा लोड करने का सबसे तेज़ तरीका है। 4. संग्रहित प्रक्रियाएं बनाएं और ट्रिगर करें। लेकिन उनके पास स्टोरेज इंजन के साथ कुछ लेना देना नहीं है।

यदि आपको InnoDB कॉन्फ़िगरेशन के साथ किसी भी मदद की ज़रूरत है तो आप मुझे बता सकते हैं।

+0

इसे प्रदर्शन प्रभावी बनाने के लिए आरडीएस में सेट करने के लिए आपके अनुशंसित इनो डीबी पैरामीटर या कॉन्फ़िगरेशन मान क्या हैं? धन्यवाद। मैं कदमों का पालन कर रहा हूं। – Aakash

0

माइग्रेशन प्रक्रिया स्वयं ही बहुत आसान है। डंप सभी आवश्यक वस्तुओं को रिकॉर्ड करेगा जिन्हें पुनर्निर्माण की आवश्यकता है। आपको केवल निकालने की आवश्यकता होगी (या बदलें, यदि डिफ़ॉल्ट आप जो चाहते हैं वह नहीं है), स्टोरेज इंजन क्लॉज। आपको इसके बारे में चिंता करने की आवश्यकता हो सकती है कि MyISAM के लिए लिखे गए एप्लिकेशन मान सकते हैं कि लेनदेन करने की कभी आवश्यकता नहीं है। तो वैसे भी, कुछ साल पहले मैं इस के साथ भाग गया:

mysqldump --all-databases | perl -pwe 's/\) TYPE=MyISAM/\)/' >dump.sql 
mysql <dump.sql 

प्लस प्रतिबद्ध और पुनरावर्तन जोड़ने जहां आवश्यक हो।

1

आप InnoDB के लिए अपने वर्तमान तालिकाओं में परिवर्तित करना चाहते हैं, तो यहाँ आसान तरीका है:

ALTER TABLE t1 ENGINE = InnoDB; 

MySQL doc देखें।

क्लाउड पर जाने से पहले अपने सर्वर पर ऐसा करना एक अच्छा विचार है - एक ही समय में दो पैरामीटर नहीं बदलें!

इनओडीबी इंजन में बहुत सी चीजें भिन्न हैं, लेकिन मुझे यकीन है कि आपके पसंदीदा खोज इंजन के साथ कुछ मिनट आपको दिखाएंगे।

+0

यह काम करता है ... मैंने अपने सर्वर में MyISAM तालिकाओं पर इंजन को बदलने की कोशिश की और इसे बदल दिया। मैं समझना चाहता हूं कि टेबल और स्क्रिप्ट में वास्तव में क्या परिवर्तन होते हैं जब यह इंजन तालिका स्क्रिप्ट को निष्पादित करता है ... उस पर और पढ़ें !! धन्यवाद। – Aakash

+0

आपको innodb (पंक्ति स्तर लॉकिंग, आदि) और सभी दर्द (कोई गिनती (*), आदि) का पूरा मज़ा मिलता है। –

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