提交日志同步期

Rup*_*jee 2 cassandra scylla cassandra-3.0

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

Dua*_*nes 8

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

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