2011-03-28 11 views
6

उन समाधानों के लिए आपकी क्या सिफारिशें हैं जो एक फ़ाइल में एक सिंगल दंगा बाल्टी का समर्थन करने की अनुमति देती हैं [या तो स्ट्रीमिंग या स्नैपशॉट द्वारा]?एक बाल्टी के लिए riak बैकअप समाधान

उत्तर

0

जहां तक ​​मुझे पता है, रीक में एक बाल्टी बैकअप के लिए कोई स्वचालित समाधान नहीं है। एक भौतिक नोड का बैक अप लेने के लिए आपको riak-admin कमांड लाइन टूल का उपयोग करना होगा। आप एक ही बाल्टी में सभी चाबियाँ पुनर्प्राप्त करने के लिए कुछ लिख सकते हैं और कम आर मानों का उपयोग करके यदि आप इसे तेज करना चाहते हैं लेकिन सुरक्षित नहीं हैं (आर = 1)।

बाल्टी एक तार्किक नामस्थान हैं, सभी चाबियाँ एक ही बिटकास्क संरचना में संग्रहीत हैं। यही कारण है कि केवल एक नोड प्राप्त करने का एकमात्र तरीका स्वयं को स्ट्रीम करने के लिए एक उपकरण लिखना है।

+0

हमें बैकअप लेने के लिए दंगा-व्यवस्थापक टूल का उपयोग करने में समस्याएं थीं। बैकअप धीमे थे, और हम उन्हें ठीक से बहाल करने के लिए कभी नहीं मिल सके। यदि यह आपका वर्तमान बैकअप समाधान है, तो मैं आपको परीक्षण करने की सलाह दूंगा कि आप ASAP को पुनर्स्थापित कर सकते हैं! हमारा वर्तमान समाधान एक Riak नोड को रोकने के लिए है,/var/lib/riak निर्देशिका का स्नैपशॉट लें, और नोड शुरू करें। अगर हमने स्नैपशॉटिंग (उदा। एक्सएफएस) के साथ फाइल सिस्टम का इस्तेमाल किया तो हम बस ऐसा करेंगे।हमने इसका परीक्षण किया है, और कोई समस्या नहीं आई है। N.B. यह माना जाता है कि आप बिटकास्क का उपयोग कर रहे हैं। –

2

बाशो फ़ंक्शन contrib में एक बाल्टी का बैक अप लेने के लिए एक एरलांग समाधान है। यह एक कस्टम फ़ंक्शन है लेकिन इसे चाल करना चाहिए।

http://contrib.basho.com/bucket_exporter.html

3

का बैक अप लिया सिर्फ एक बाल्टी Riak में एक कठिन आपरेशन होने जा रहा है।

समाधान के सभी निम्नलिखित दो चरणों के लिए नीचे उबाल होगा:

  1. सूची बाल्टी में वस्तुओं के सभी। यह मुश्किल हिस्सा है, क्योंकि Riak क्लस्टर में कहीं भी "प्रकट" या किसी भी बाल्टी की सामग्री की एक सूची नहीं है।

  2. ऊपर दी गई सूची से उन वस्तुओं में से प्रत्येक को एक GET जारी करें, और इसे बैकअप फ़ाइल में लिखें। यह हिस्सा आम तौर पर आसान है, हालांकि अधिकतम प्रदर्शन के लिए आप यह सुनिश्चित करना चाहते हैं कि आप समानांतर में, एक बहुप्रचारित फैशन में और कुछ प्रकार के कनेक्शन पूलिंग का उपयोग करके उन जीईटी जारी कर रहे हैं।

जहां तक ​​सभी ऑब्जेक्ट्स सूचीबद्ध हैं, आपके पास तीन विकल्पों में से एक है।

एक HTTP (जैसे /buckets/bucket/keys?keys=stream) या प्रोटोकॉल बफ़र के माध्यम से बाल्टी पर एक स्ट्रीमिंग सूची कुंजी आपरेशन करने के लिए है - http://docs.basho.com/riak/latest/dev/references/http/list-keys/ और http://docs.basho.com/riak/latest/dev/references/protocol-buffers/list-keys/ जानकारी के लिए देखते हैं। किसी भी परिस्थिति में आप एक गैर स्ट्रीमिंग नियमित सूची कुंजी ऑपरेशन करना चाहिए। (यह आपके पूरे क्लस्टर को लटका देगा, और आखिर में चाबियों की संख्या काफी बड़ी हो जाने के बाद या तो समय समाप्त हो जाएगी या दुर्घटनाग्रस्त हो जाएगा)।

दो ऑब्जेक्ट सूची प्राप्त करने के लिए माध्यमिक अनुक्रमणिका (2i) क्वेरी जारी करना है। चर्चा और चेतावनी के लिए http://docs.basho.com/riak/latest/dev/using/2i/ देखें।

और तीन होंगे यदि आप Riak Search का उपयोग कर रहे हैं और सभी ऑब्जेक्ट्स को एक पृष्ठांकित खोज क्वेरी के माध्यम से पुनर्प्राप्त कर सकते हैं। (हालांकि, Riak खोज में 10,000 परिणामों की क्वेरी परिणाम सीमा है, इसलिए, यह दृष्टिकोण आदर्श से बहुत दूर है)।

एक स्टैंडअलोन ऐप का एक उदाहरण के लिए जो एक बाल्टी बैकअप कर सकता है, Riak Data Migrator पर एक नज़र डालें, एक प्रयोगात्मक जावा ऐप जो कुशल समांतर जीईटी के साथ स्ट्रीमिंग सूची कुंजी दृष्टिकोण का उपयोग करता है।

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