如果我们使用复制,禁用提交日志是否安全?当节点发生故障时,通常是由于硬盘故障造成的,因此提交日志不会帮助我们提高持久性,但复制会。为什么我们在使用复制时还需要提交日志?
最佳答案
如果没有提交日志,存储在副本上的内存表中的数据可能需要很长时间(可能是无限制的,但实际上通常是几分钟)才能写入磁盘。这意味着,在该窗口内,您可能会丢失写入。例如,如果您的数据中心断电,您可能会丢失所有副本上最后几分钟的所有写入。提交日志(默认情况下)每 10 秒同步一次,因此如果同时发生故障,您最多会丢失 10 秒的数据。
但是,如果您使用多数据中心复制,则需要跨数据中心同时发生故障才能丢失数据。
这是一个权衡:没有复制的提交日志可以防止单个节点崩溃或出现非破坏性故障。通过在单个 DC 中进行复制,可以防止整个 DC 发生故障,例如电源(检测)失败。通过多 DC 中的复制,它可以防止相关故障。您可以根据启用提交日志的成本与丢失最近写入的成本来决定需要多少弹性。
关于cassandra - 禁用提交日志安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15157290/