कैसंड्रा का प्रतिबद्ध लॉग कैसंड्रा टिकाऊ लिखता है। जब आप कैसंद्रा को लिखते हैं, तो क्लाइंट को लिखने से पहले लिखने को प्रतिबद्ध लॉग में जोड़ा जाता है। इसका अर्थ यह है कि प्रत्येक लिखने के लिए क्लाइंट को एक सफल प्रतिक्रिया प्राप्त होती है जो प्रतिबद्ध लॉग में लिखी जाने की गारंटी है। यह लेखन वर्तमान मेमटेबल को भी बनाया गया है, जो अंततः डिस्क पर एसएसटीबल के रूप में लिखा जाएगा जब काफी बड़ा होगा। लिखने के बाद यह एक लंबा समय हो सकता है।
हालांकि, प्रतिबद्धता लॉग प्रदर्शन निष्पादन कारणों से डिस्क पर तुरंत समन्वयित नहीं किया जाता है। डिफ़ॉल्ट 10 सेकंड की अवधि के साथ आवधिक मोड (cassandra.yaml में commitlog_sync param द्वारा सेट किया गया है) (cassandra.yaml में commitlog_sync_period_in_ms द्वारा सेट)। इसका मतलब है कि प्रतिबद्ध लॉग प्रत्येक 10 सेकंड में डिस्क पर सिंक किया जाता है। इस व्यवहार के साथ यदि सर्वर शक्ति खो देता है तो आप 10 सेकंड तक लिख सकते हैं। यदि आपके क्लस्टर में एकाधिक नोड्स थे और एक से अधिक के प्रतिकृति कारक का उपयोग किया जाता है तो आपको किसी भी डेटा को खोने के लिए 10 सेकंड के भीतर कई नोड्स को पावर खोना होगा।
यदि यह जोखिम विंडो स्वीकार्य नहीं है, तो आप प्रतिबद्ध लॉग के लिए बैच मोड का उपयोग कर सकते हैं। यह मोड क्लाइंट को तब तक स्वीकार नहीं करेगा जब तक कि डिस्क लॉग को डिस्क पर सिंक नहीं किया जाता है। टाइम विंडो commitlog_sync_batch_window_in_ms द्वारा निर्धारित की जाती है, डिफ़ॉल्ट 50 एमएस है। इससे आपकी लेखन विलंबता में काफी वृद्धि होगी और संभवतः थ्रूपुट भी कम हो जाएगा, इसलिए केवल कुछ इसका उपयोग करें यदि कुछ स्वीकृत लिखने की लागत अधिक है। इस मोड का उपयोग करते समय अपने प्रतिबद्ध लॉग को एक अलग ड्राइव पर स्टोर करना विशेष रूप से महत्वपूर्ण है।
अगर आपका सर्वर सत्ता खो देता है, तो स्टार्टअप पर कैसंड्रा अपने मेमटेबल को पुनर्निर्माण के लिए प्रतिबद्ध लॉग को दोहराता है। इस प्रक्रिया में बहुत अधिक भारी सर्वरों पर सेकंड (संभवतः मिनट) लगेंगे।
यदि आप यह सुनिश्चित करना चाहते हैं कि memtables में डेटा डिस्क पर लिखा गया है तो आप 'nodetool flush' चला सकते हैं (यह प्रति नोड संचालित करता है)। यह एक नया एसएसटीबल बनाएगा और स्मेच किए गए मेमटेबल्स में डेटा का जिक्र करते हुए प्रतिबद्ध लॉग हटा देगा।
विस्तृत और बहुत अच्छी तरह से लिखित स्पष्टीकरण के लिए धन्यवाद - यह अब बहुत स्पष्ट है।मुझे आशा है कि यह मेरे जैसे अन्य नए लोगों की भी मदद करेगा। – user1680784
ऐसा लगता है कि आपके पास 'बैच' और 'आवधिक' पीछे की ओर हो सकता है ... आवधिक डिफ़ॉल्ट है, स्वीकृति देने के लिए आप बैच पर स्विच करेंगे, हां? –
@ रिचर्ड मुझे इस समस्या का सामना करना पड़ रहा है। कैसंद्रा प्रतिबद्ध लॉग भ्रष्ट है। कोई सुझाव? मैंने यहां एक प्रश्न पोस्ट किया है: http://stackoverflow.com/questions/33304367/cassandra-exiting-due-to-error-while-processing-commit-log-during-initializatio – Dojo