2011-05-27 19 views
5

कई साइट्स और स्क्रिप्ट अभी भी PostgreSQL के बजाय MySQL का उपयोग करते हैं। मेरे पास कुछ कम प्राथमिकता वाले ब्लॉग हैं और ऐसे में कि मैं किसी अन्य डेटाबेस में माइग्रेट नहीं करना चाहता हूं इसलिए मैं MySQL का उपयोग कर रहा हूं।MySQL MyISAM डेटा हानि संभावनाएं?

यहां समस्या है, उनकी कम-स्मृति VPS पर समस्या है। इसका मतलब है कि मैं InnoDB को सक्षम नहीं कर सकता क्योंकि यह लोड होने के लिए लगभग 80 एमबी मेमोरी का उपयोग करता है। इसलिए मुझे माईसाम चलाने का जोखिम उठाना है।

इस बात को ध्यान में रखते हुए, माईसैम के साथ मैं किस प्रकार का डेटा हानि देख रहा हूं? यदि कोई ब्लॉग पोस्ट सहेज रहा था, तो कोई पावर-आउटेज था, क्या मैं बस उस पोस्ट को खो दूंगा, या पूरा डेटाबेस?

इन निम्न-अंत-बक्से पर मैं कुछ हालिया टिप्पणियां या ब्लॉग पोस्ट खोने के साथ ठीक हूं, जब तक पूरा डेटाबेस खो नहीं जाता है।

+0

आपका वीपीएस आपको कितनी छोटी याद दिलाता है? आप एक अलग मेजबान के साथ जाने पर विचार करना चाह सकते हैं। ड्रीमहोस्ट में 600 एमबी वीपीएस 30 डॉलर प्रति माह है। जो वे कहते हैं वह शीर्ष 100 ब्लॉग के लिए पर्याप्त है। यदि $ 30 बहुत अधिक है तो आपका डेटा इतना अधिक मूल्यवान नहीं है और आपको केवल MySQL डंप के माध्यम से दैनिक (या अधिक बार) बैकअप करने के लिए एक स्क्रिप्ट सेट अप करनी चाहिए। – Kibbee

+0

धन्यवाद, लेकिन मैं केवल 600 एमबी के लिए $ 30 प्रति माह का भुगतान करने को तैयार नहीं हूं। इसके अलावा, अगर मैं माईसाम काम करने का कोई तरीका ढूंढ सकता हूं तो मेरी रैम बढ़ाने का कोई कारण नहीं है। – Xeoncross

+1

http://stackoverflow.com/search?q=myisam+corrupt –

उत्तर

2

आप ब्याज की निम्नलिखित MySQL प्रदर्शन लेख मिल सकती है:

मेरे लिए यह न केवल तालिका ताले के बारे में है। टेबल लॉक केवल MyISAM सीमाओं में से एक है जिसे आपको उत्पादन में उपयोग करने पर विचार करने की आवश्यकता है। विशेष रूप से यदि आप "पारंपरिक" डेटाबेस से आ रहे हैं तो आपको MyISAM व्यवहार (और इसके कारण डिफ़ॉल्ट MySQL व्यवहार) द्वारा चौंकाने की संभावना है - यह अनुचित शट डाउन द्वारा दूषित हो जाएगा, अगर कुछ त्रुटियां हैं तो आंशिक कथन निष्पादन में विफल हो जाएगा पता चला आदि ...

http://www.mysqlperformanceblog.com/2006/06/17/using-myisam-in-production/

+0

"छिपे हुए भ्रष्टाचार। यदि खराब स्मृति ओएस या माईएसक्यूएल कीड़े हो सकती हैं लेकिन भ्रष्टाचार हो सकता है और माईसाम स्टोरेज इंजन के साथ लंबे समय तक ध्यान नहीं दिया जा सकता है। यह छुपा भ्रष्टाचार बाद में गलत प्रश्नों के परिणाम और डेटा भ्रष्टाचार को दुर्घटनाग्रस्त कर सकता है।" – Xeoncross

-4

मेरी विनम्र राय में, माईसाम के साथ कोई भी डेटा हानि नहीं है।

बिजली आउटेज से डेटा हानि का जोखिम बिजली के आउटेज के कारण बिजली आउटेज के कारण है।

+0

ठीक है, मुझे लगता है कि कुछ महत्वपूर्ण लेखन एक MyISAM जानकारी तालिका, शीर्षलेख, या पंक्ति में हो सकता है जो उस फ़ाइल को अमान्य स्थिति में छोड़ देगा। MyISAM यह कैसे संभालता है? – Xeoncross

+0

हम्म, क्षमा करें, मैं वास्तव में नहीं जानता। मुझे लगता है कि MySQL/MyISAM विश्वसनीय है, लेकिन मैं कार्यान्वयन के इस स्तर के बारे में अनदेखा करता हूं। मैं MySQL दस्तावेज़ ... या यहां तक ​​कि स्रोत कोड की जांच करता हूं। –

+0

यह केवल इतना हद तक सच है कि आप बैकएंड के अस्तित्व को अनदेखा करते हैं जो डेटा खोना नहीं है। हां, नुकसान का तत्काल कारण बिजली आउटेज था, लेकिन यह कहना गलत नहीं है कि माईसाम डेटा बैकएंड लिख सकता है जब बैकएंड लिखना संभव है जो डेटा को बनाए रखेगा, और आप अनदेखा कर रहे हैं कि अन्य समस्याएं हैं माईसाम के साथ –

0

MySQL manual points आपकी तालिका को दूषित करने वाली घटनाओं के प्रकारों के बाहर और myisamchk to repair tables का उपयोग करने का तरीका बताते हुए एक लेख है। आप इसे ठीक करने के लिए एक प्रश्न भी जारी कर सकते हैं।

REPAIR TABLE table; 

हालांकि, इस बारे में कोई जानकारी नहीं है कि कुछ प्रकार के क्रैश "unfix-able" हो सकते हैं या नहीं। वह डेटा हानि का प्रकार है जिसे मैं बैकअप कर रहा हूं, भले ही मैं अनुमति नहीं दे सकता।

0

सर्वर क्रैश के साथ आपकी ऑटो वृद्धि प्राथमिक कुंजी दूषित हो सकती है, इसलिए आपकी ब्लॉग पोस्ट आईडी 122, 123, 75 9 12371234, 75 9 12371235 (जहां सर्वर 123 के बाद दुर्घटनाग्रस्त हो) से कूद सकता है। मैंने इसे देखा है और यह सुंदर नहीं है।

5

MyISAM एसिड अनुरूप नहीं है और इसलिए स्थायित्व का अभाव है। यह वास्तव में इन लागतों पर निर्भर करता है ... इनो डीबी या डाउनटाइम का उपयोग करने के लिए स्मृति। MyISAM निश्चित रूप से एक व्यवहार्य विकल्प है लेकिन डेटाबेस परत से आपके आवेदन की क्या आवश्यकता है? MyISAM का उपयोग करना इसकी सीमाओं के कारण जीवन को कठिन बना सकता है लेकिन कुछ परिदृश्यों में MyISAM ठीक हो सकता है। केवल तार्किक mysqldump बैकअप का उपयोग करके उनकी लॉकिंग प्रकृति के कारण आपकी सेवा में बाधा आ जाएगी। यदि आप बाइनरी लॉगिंग का उपयोग कर रहे हैं तो आप इन्हें बढ़ते बैकअप देने के लिए इन्हें वापस कर सकते हैं जिन्हें पुनर्प्राप्ति में सहायता के लिए पुनः चलाया जा सकता है, माईसाम टेबल में कुछ भ्रष्ट होना चाहिए।

+0

+1 अंत में, मैं वास्तव में डाउनटाइम से निपटने की तुलना में अधिक स्मृति के लिए भुगतान करना चाहता हूं। अगर वहां केवल एक या दो ही कभी लिखित टेबल थी जो एक बात होगी, लेकिन +10 तालिकाओं के साथ मुझे इसे जोखिम नहीं लेना चाहिए। यहां तक ​​कि SQLite भी बेहतर विकल्प होगा। – Xeoncross

0

आप हमेशा उसी वीएलएएन पर एक और होस्ट प्राप्त कर सकते हैं जो बैकअप के रूप में आपके डेटाबेस में गुलाम हो जाता है, इससे जोखिम काफी कम हो जाएगा।मैं केवल अन्य विकल्प लगता है कि आप कर रहे हैं:

  1. आपके सर्वर के लिए अधिक रैम जाओ या कुछ सेवाओं के मारने
  2. देखें कि कहीं आपके मेजबान VLAN पर किसी भी तरह के डेटाबेस होस्टिंग साझा किया है यदि आप एक छोटे के लिए उपयोग कर सकते हैं शुल्क।
  3. नियमित बैकअप बनाएं और सबसे खराब के लिए तैयार रहें।
संबंधित मुद्दे