gpt4 book ai didi

crash - 单节点上的 Cassandra 提交和恢复

转载 作者:行者123 更新时间:2023-12-03 15:24:37 24 4
gpt4 key购买 nike

我是 Cassandra 的新手 - 我一直在寻找与 Cassandra 中单个节点上的提交和崩溃恢复相关的信息。并且,希望有人能澄清细节。

我正在测试 Cassandra - 因此,将其设置在单个节点上。我在 datastax 上使用压力工具来插入数百万行。如果发生电气故障或系统关闭会怎样? Cassandra 重新启动后,Cassandra 内存中的所有数据是否都会写入磁盘(我猜 commitlog 充当中介)?这个过程需要多长时间?

谢谢!

最佳答案

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

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

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

如果您的服务器断电,启动时 Cassandra 会重放提交日志以重建其内存表。在写入量很大的服务器上,此过程将需要几秒钟(可能几分钟)。

如果您想确保将内存表中的数据写入磁盘,您可以运行“nodetool flush”(这对每个节点进行操作)。这将创建一个新的 SSTable 并删除引用已刷新的 memtables 中的数据的提交日志。

关于crash - 单节点上的 Cassandra 提交和恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com