2012-05-05 16 views
15

मैं बस सोच रहा था कि कैसंद्रा में एक संपूर्ण कुंजीपटल बैकअप करने का सबसे अच्छा तरीका क्या होगा ... आपको क्या लगता है?कैसंद्रा: बैकअप संपूर्ण कुंजीपटल

पहले मैंने डेटा बैकअप हार्ड ड्राइव में डेटा फ़ोल्डर की प्रतिलिपि बनाई थी, लेकिन फिर मुझे अपडेट करने के बाद डेटाबेस को पुनर्स्थापित करने में समस्याएं थीं।

उत्तर

13

स्नैपशॉट्स (nodetool snapshot) करके सबसे अच्छा तरीका है। आप इस काम के बारे में बहुत कुछ सीख सकते हैं कि यह कैसे काम करता है और इस Datastax documentation में इसका सर्वोत्तम उपयोग कैसे करें (अस्वीकरण: मैं डेटास्टैक्स के लिए काम करता हूं)।

आप यह सुनिश्चित करना चाहते हैं कि आपके पास जेएनए सक्षम है (कुछ प्रासंगिक निर्देश this page पर पाए जा सकते हैं)। यदि आप करते हैं, तो स्नैपशॉट अत्यंत तेज़ हैं; वे मौजूदा sstables के लिए बस मुश्किल लिंक हैं। कोई प्रतिलिपि करने की जरूरत नहीं है। यदि आप किसी विशेष तरीके से अपने बैकअप का ट्रैक रखना चाहते हैं तो आप स्नैपशॉट को अन्य बैकअप टूल (या बस rsync, cp, आदि) के साथ जोड़ सकते हैं।

+5

यह एक भयानक डिजाइन की तरह लगता है। मुझे तालिका के वर्तमान संस्करण को खोजने के लिए मजबूर होना पड़ता है tablename-asdfasfsadfaf >> उस निर्देशिका में बदलें >> स्नैपशॉट फ़ाइलों को कॉपी करें .. और फिर इसे 50 बार करें क्योंकि मुझे प्रत्येक तालिका के लिए इसे एक बार करना है। सभी फ़ाइलों को एक आउटपुट निर्देशिका या एकल बैकअप फ़ाइल में स्नैपशॉट करने का एक तरीका होना चाहिए। सबसे अच्छी बात यह है कि आप सभी फाइलों को खींचने के लिए कुछ स्क्रिप्ट लिख सकते हैं। – KingOfHypocrites

+1

@ किंगऑफ हाइपोक्राइट्स, यह बदसूरत है, लेकिन इससे निपटने में बहुत मुश्किल नहीं है। आप स्नैपशॉट नाम का उपयोग या तो डेटा को स्थानांतरित या कॉपी करने के लिए कर सकते हैं जहां भी आप इसे स्टोर करना चाहते हैं। यदि आप स्नैपशॉट बनाते समय कोई नाम चुनते हैं जो इसे आसान बनाता है। यदि आप नाम प्राप्त करने के लिए 'nodetool listnapshots' कमांड का उपयोग नहीं कर सकते हैं (वह सुविधा कैसंड्रा 2.1 में पेश की गई थी)। – Gene

6

Datastax documentation पढ़ने के अलावा, मुझे आलेख "incrementally backup up cassandra with amanda" अंतर्दृष्टि मिली। यह वृद्धिशील बैकअप और स्नैपशॉट्स का उपयोग करने के तरीके के बारे में है।

अंत में, यह निम्नलिखित प्रक्रियाओं की सिफारिश की:

  1. पूर्ण बैकअप
    • वर्ष वृद्धिशील फ़ाइलें और सिमलिंक निकालें।
    • nodetool snapshot
    • सिमलिंक सभी स्नैपशॉट एक बैकअप निर्देशिका
    • बैकअप कि निर्देशिका अपसंदर्भन सिमलिंक करने के लिए फ़ाइलों।
    • nodetool clearsnapshot और सिम्लिंक हटाएं। बैकअप निर्देशिका में
      • nodetool flush
      • सिमलिंक सभी वृद्धिशील फ़ाइलें:
    • वृद्धिशील बैकअप (कैसेंड्रा के builtin वृद्धिशील बैकअप के साथ भ्रमित नहीं करने के लिए जा सकती है)।
    • बैकअप कि निर्देशिका dereferencing symlinks।
  2. पुनर्स्थापित
    • अंतिम पूर्ण बैकअप और सभी वृद्धिशील पुनर्स्थापित करें।
+0

जब आप कहते हैं कि "अंतिम पूर्ण बैकअप पुनर्स्थापित करें" जो वांछित लक्ष्य को फिर से बता रहा है। लेकिन - यह कैसे किया जाता है? क्या कोई आदेश है? क्या स्नैपशॉट निर्देशिकाओं को वापस जगह में कॉपी करना उतना आसान है? –

+0

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

6

मैं क्लस्टर स्नैपशॉट और बैकअप को स्वचालित और S3 पर उन्हें स्टोर करने के लिए एक सरल अजगर उपकरण लिखा था।

https://github.com/tbarbugli/cassandra_snapshotter, GitHub पेज है वहाँ आप भी प्रलेखन

+0

कोई भी मौका आपने एक पुनर्स्थापना उपकरण भी लिखा है? –

4

एक अन्य विकल्प sstables कि लिखा जा रहा है पर नजर रखने के लिए है, और संवर्द्धित बैकअप उन फ़ाइलों को पा सकते हैं।

उदाहरण के लिए tablesnap देखें।

प्रलेखन से:

Tablesnap एक स्क्रिप्ट IN_MOVED_TO घटनाओं के लिए एक निर्देशिका पर नजर रखने के inotify उपयोग करता है और अमेज़न S3 के लिए उस फ़ाइल अपलोड करने के लिए एक नया धागा को उत्पन्न करने के द्वारा उन्हें प्रतिक्रिया करता है, JSON- प्रारूपण सूची के साथ वह यह है कि प्रतिलिपि के समय निर्देशिका में अन्य फाइलें क्या थीं।

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

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