Cassandra'nın taahhüt kütüğü, Cassandra'ya dayanıklı yazılar yazar. Cassandra'ya yazdığınızda, yazma işlemi istemciye kabul edilmeden önce yazma günlüğüne eklenir. Bu, müşterinin başarılı bir yanıt aldığı her yazının, taahhüt günlüğüne yazılmasının garanti edildiği anlamına gelir. Yazma ayrıca, geçerli büyüklükte bir SSTable olarak diske yazılacak olan güncel not defterine de yazılır. Yazma işleminden sonra bu uzun bir zaman olabilir. Ancak, performans günlüğü için derleme günlüğü hemen diskle senkronize edilmez. Varsayılan, (cassandra.yaml dosyasında commitlog_sync_period_in_ms tarafından belirlenen) 10 saniyelik bir süre ile periyodik moddur (cassandra.yaml içindeki commitlog_sync parametresi ile ayarlanır). Bu, taahhüt kaydının her 10 saniyede bir diske senkronize edildiği anlamına gelir. Bu davranışla, sunucu gücü kaybederse 10 saniyeye kadar yazabilirsiniz. Kümenizde birden fazla düğüm varsa ve birden daha büyük bir çoğaltma faktörü kullandıysanız, herhangi bir veriyi kaybetmek için 10 saniye içinde birden çok düğüme güç kaybetmeniz gerekir.
Bu risk penceresi kabul edilemezse, işlem günlüğü için toplu iş modunu kullanabilirsiniz. Bu mod, taahhüt günlüğü diske senkronize edilene kadar istemciye yazılanları kabul etmeyecektir. Zaman penceresi commitlog_sync_batch_window_in_ms tarafından ayarlanır, varsayılan değer 50 ms'dir. Bu, yazma gecikme sürenizi önemli ölçüde artıracak ve muhtemelen üretkenliği azaltacaktır, bu nedenle sadece birkaç kabul edilmiş yazıyı kaybetme maliyeti yüksekse bunu kullanın. Bu modu kullanırken, işlem günlüğünüzü ayrı bir sürücüde saklamak özellikle önemlidir.
Sunucunuzun güç kaybedmesi durumunda, başlangıçta Cassandra, günlüğünü yeniden oluşturmak için taahhüt günlüğünü tekrarlar. Bu işlem çok yazılan ağır sunucularda saniyeler (muhtemelen dakikalar) alacaktır.
Memelilerdeki verilerin diske yazıldığından emin olmak istiyorsanız 'nodetool flush' (bu, her düğüm için çalışır) çalıştırabilirsiniz. Bu, yeni bir SSTable oluşturacak ve temizlenen memurlardaki verilere atıfta bulunan taahhüt kayıtlarını siler.
Detaylı ve çok iyi yazılmış bir açıklama için teşekkür ederiz - şimdi çok daha net.Umarım bu benim gibi diğer yeni başlayanlara da yardımcı olur. – user1680784
'batch' ve 'periyodik' geriye sahip olabilirsiniz ... periyodik varsayılan, kabul yapmak için toplu işlere geçmenizi beklemek, evet? –
@Richard Bu sorunla karşı karşıyayım. Cassandra taahhüt kütüğü bozuk. Baska öneri? Burada bir soru yayınladım: http://stackoverflow.com/questions/33304367/cassandra-exiting-due-to-error-while-processing-commit-log-during-initializatio – Dojo