2015-10-13 17 views
5

से कीपस्पेस हटाने के बाद भी डिस्क स्पेस मुक्त नहीं हुआ है, मैंने इसके अंदर एक कीपस्पेस और एक टेबल (कॉलमफैमिली) बनाई है। के "ks.cf"कैसंड्रा डीबी और कॉम्पैक्शन

कहना columnfamily cf में कुछ सौ हजार पंक्तियों दर्ज करने के बाद दो, मैं df -h का उपयोग कर डिस्क उपयोग को देखा।

फिर, मैंने से DROP KEYSPACE ks कमांड का उपयोग करके कीस्पेस को छोड़ दिया।

ड्रॉप करने के बाद, डिस्क उपयोग remains the same। मैंने nodetool compact भी किया, लेकिन कोई भाग्य नहीं।

क्या कोई इन चीजों को कॉन्फ़िगर करने में मेरी सहायता कर सकता है ताकि डेटा/पंक्तियों को हटाने के बाद डिस्क उपयोग मुक्त हो जाए?

उत्तर

2

यदि आप पंक्तियों को हटाने की कोशिश कर रहे हैं, तो आपको हटाने के चरण को सामान्य हटाने चक्र (delete_row-> tombstone_creation-> compaction_actually_deletes_the_row) के माध्यम से जाने की आवश्यकता है।

अब अगर आप पूरी तरह से अपने कुंजीपटल से छुटकारा पाना चाहते हैं, तो अपने कैसंड्रा डेटा फ़ोल्डर की जांच करें (इसे आपके यम फ़ाइल में निर्दिष्ट किया जाना चाहिए)। मेरे मामले में यह "/ mnt/cassandra/data /" है। इस फ़ोल्डर में प्रत्येक कुंजीपटल (यानी केएस) के लिए एक उपफोल्डर है। आप बस अपने कुंजीपटल से संबंधित फ़ोल्डर को पूरी तरह से हटा सकते हैं।

यदि आप फ़ोल्डर को चारों ओर रखना चाहते हैं, तो यह जानना अच्छा है कि कैसंड्रा इसे छोड़ने से पहले अपने चाबियाँ का एक स्नैपशॉट बनाता है। असल में आपके सभी डेटा का बैकअप। आप बस 'केएस' फ़ोल्डर में जा सकते हैं, और स्नैपशॉट्स उपनिर्देशिका पा सकते हैं। स्नैपशॉट्स उपनिर्देशिका में जाएं और अपनी कुंजीपटल ड्रॉप से ​​संबंधित स्नैपशॉट हटाएं।

+0

यूप !! यह स्नैपशॉट्स को बनाए रखता है जिसे मैन्युअल रूप से हटाया जा सकता है। लेकिन फिर भी मैं df -h का उपयोग कर एक ही डिस्क स्थान देखता हूं, लेकिन जब मैं डेटा को फिर से कैसंड्रा में धक्का देता हूं तो यह बढ़ता नहीं जा रहा है। शायद ओएस या कैसंद्रा कुछ प्रकार के कैशिंग या डिस्क स्पेस प्रबंधन करता है जो मुझे नहीं पता। –

+0

याद रखें, सभी कैसंड्रा लिखने के लिए, डेटा को पहली बार मेमोरी में रखा जाता है जब तक कि कैसंद्रा तय नहीं करता कि यह एक एसएसटेबल के रूप में डिस्क पर फ्लश करने का समय है। आप इसे 'nodetool flush ' के माध्यम से डिस्क पर मैन्युअल रूप से फ़्लश कर सकते हैं। – Aki

+0

ओह ठीक है !! तो वहां कुछ कॉन्फ़िगरेशन पैराम होना चाहिए जो तय करते हैं कि फ़्लश करना और कितना डेटा फ़्लश करना है .. उन कॉन्फ़िगरेशन पैरा क्या हैं? क्या मैं इसे कैसंद्रा आधिकारिक दस्तावेज में ढूंढूंगा? –

5

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

nodetool -h localhost -p 7199 clearsnapshot

उचित नोड्स पर

। इसके अतिरिक्त आप अपने cassandra.yml में auto_snapshot: false के साथ स्नैपशॉट बंद कर सकते हैं।

संपादित करें: वर्तनी/व्याकरण

+0

मैंने एक ही विधि का उपयोग किया लेकिन अभी भी clearsnapshot के बाद भी खाली निर्देशिकाएं बाकी हैं। मेरा अनुमान है कि उनको हटाना सुरक्षित है। किसी को? – gubble

+1

@ गब्बल हाँ, मैंने ओसीडी के कारण उन्हें मैन्युअल रूप से हटा दिया। यदि आपके पास समान नाम वाली टेबल हैं तो हैश को लाइन करें। – Highstead

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