crash - Cassandra Commit and Recovery on a Single Node -


i newbie cassandra - have been searching information related commits , crash recovery in cassandra on single node. and, hoping can clarify details.

i testing cassandra - so, set on single node. using stresstool on datastax insert millions of rows. happens if there electrical failure or system shutdown? data in cassandra's memory written disk upon cassandra restart (i guess commitlog acts intermediary)? how long process?

thanks!

cassandra's commit log gives cassandra durable writes. when write cassandra, write appended commit log before write acknowledged client. means every write client receives successful response guaranteed written commit log. write made current memtable, written disk sstable when large enough. long time after write made.

however, commit log not synced disk performance reasons. default periodic mode (set commitlog_sync param in cassandra.yaml) period of 10 seconds (set commitlog_sync_period_in_ms in cassandra.yaml). means commit log synced disk every 10 seconds. behaviour lose 10 seconds of writes if server loses power. if had multiple nodes in cluster , used replication factor of greater 1 need lose power multiple nodes within 10 seconds lose data.

if risk window isn't acceptable, can use batch mode commit log. mode won't acknowledge writes client until commit log has been synced disk. time window set commitlog_sync_batch_window_in_ms, default 50 ms. increase write latency , decrease throughput use if cost of losing few acknowledged writes high. important store commit log on separate drive when using mode.

in event server loses power, on startup cassandra replays commit log rebuild memtable. process take seconds (possibly minutes) on write heavy servers.

if want ensure data in memtables written disk can run 'nodetool flush' (this operates per node). create new sstable , delete commit logs referring data in memtables flushed.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -