提交日志同步期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提交日志同步期相关的知识,希望对你有一定的参考价值。

根据cassandra提交日志同步周期..数据首先进入os缓冲区...然后从os缓冲区,基于提交日志同步周期,缓冲区数据被同步到磁盘中提交日志文件...默认同步周期为10秒......如果服务器在10秒内崩溃了......数据丢失了吗?但是客户端获得了响应,因为当数据被写入os缓冲区中的commitlog缓冲区并且可记忆时...但最终数据丢失,因为系统在10秒窗口内崩溃...我错过了什么?

答案

你没有遗漏任何东西。像Cassandra和Scylla这样的数据库不仅可以在故障情况下权衡可用性,而且像Postgres这样的传统数据库也可以权衡性能的耐久性。您可以将commitlog_sync选项更改为batch或减少commitlog_sync_period_in_ms;请注意,如果执行此操作,最好将commitlog存储在与数据目录不同的介质中。

这背后的原因是耐久性可以通过持久性实现,也可以通过复制实现。典型的Cassandra / Scylla用户通常会使用RF = 3,并使用QUORUM的一致性级别进行写入,这样您就需要多台计算机的协同故障才能真正丢失数据。

另一答案

(免责声明:我是ScyllaDB员工)

我认为你缺少的是数据被写入磁盘上的commitlog和同时记忆,并假设你使用RF> 1且CL> 1(例如仲裁),即使特定节点崩溃,其他副本仍将有数据,以后可以修复。

如果您使用RF> 1且CL = ONE,那么如果节点在同步副本之前崩溃,则数据也将丢失。

如果整个群集出现故障,或者在单个节点群集的情况下,您的客户端可能会返回SUCCESS ACK,但数据将丢失。

欢迎您查看Scylla Architecture文档以便更好地理解:

以上是关于提交日志同步期的主要内容,如果未能解决你的问题,请参考以下文章

26期20180719

argparse 代码片段只打印部分日志

常用python日期日志获取内容循环的代码片段

《安富莱嵌入式周报》第279期:强劲的代码片段搜索工具,卡内基梅隆大学安全可靠C编码标准,Nordic发布双频WiFi6 nRF7002芯片

Item is out of date

数字信号处理基于matlab数字信号同步压缩变换含Matlab源码 1535期