加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

崩溃 – 单节点上的Cassandra提交和恢复

发布时间:2020-12-13 13:55:21 所属栏目:百科 来源:网络整理
导读:我是Cassandra的新手 – 我一直在单个节点上搜索与Cassandra中的提交和崩溃恢复相关的信息.而且,希望有人能澄清细节. 我正在测试Cassandra – 所以,将它设置在一个节点上.我在datastax上使用stresstool插入数百万行.如果出现电气故障或系统关闭会发生什么?
我是Cassandra的新手 – 我一直在单个节点上搜索与Cassandra中的提交和崩溃恢复相关的信息.而且,希望有人能澄清细节.

我正在测试Cassandra – 所以,将它设置在一个节点上.我在datastax上使用stresstool插入数百万行.如果出现电气故障或系统关闭会发生什么?在Cassandra重新启动时,Cassandra内存中的所有数据都会被写入磁盘(我猜commitlog充当中介)吗?这个过程需要多长时间?

谢谢!

Cassandra的提交日志为Cassandra提供了持久的写入.当您向Cassandra写入时,在向客户端确认写入之前,写入会附加到提交日志中.这意味着保证将客户端收到成功响应的每个写入写入提交日志.写入也是当前的memtable,当足够大时,最终将作为SSTable写入磁盘.写入后可能需要很长时间.

但是,出于性能原因,提交日志不会立即同步到磁盘.默认值为periodic模式(由cassandra.yaml中的commitlog_sync param设置),周期为10秒(由cassandra.yaml中的commitlog_sync_period_in_ms设置).这意味着提交日志每10秒同步到磁盘.如果服务器断电,您可能会丢失最多10秒的写入行为.如果群集中有多个节点并且使用的复制因子大于1,则需要在10秒内断开多个节点的电源以丢失任何数据.

如果此风险窗口不可接受,则可以使用批处理模式提交日志.在将提交日志同步到磁盘之前,此模式不会确认写入客户端.时间窗口由commitlog_sync_batch_window_in_ms设置,默认为50 ms.这将显着增加您的写入延迟并可能降低吞吐量,因此只有在丢失一些确认写入的成本很高时才使用它.使用此模式时,将提交日志存储在单独的驱动器上尤为重要.

如果您的服务器断电,启动时Cassandra会重播提交日志以重建其memtable.这个过程在非常重写的服务器上需要几秒钟(可能是几分钟).

如果要确保将memtables中的数据写入磁盘,可以运行“nodetool flush”(每个节点运行一次).这将创建一个新的SSTable并删除引用刷新的memtables中的数据的提交日志.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读