2013-03-01 76 views
1

如果我们使用复制,禁用提交日志是否安全?当一个节点发生故障时,通常是由于硬盘故障导致的,因此在该提交日志中,我们无法提供耐用性,但是复制会有帮助。为什么我们在使用复制时甚至需要提交日志?禁用提交日志安全吗?

回答

1

在没有提交日志的情况下,存储在副本上的memtables中的数据可能需要很长时间(可能是无界的,实际上通常是几分钟)才能写入磁盘。这意味着,在该窗口内,您可能会丢失写信。例如,如果您的数据中心断电,则可能会丢失所有副本上最后几分钟的所有写入。提交日志每10秒同步一次(默认情况下),以便在同时发生故障时最多丢失10秒的数据。

但是,如果您使用多数据中心复制,那么会丢失数据,您将需要跨数据中心同时发生故障。

这是一个折衷:提交日志,没有防止单个节点崩溃或具有非破坏性故障的复制。通过在单个DC中复制,它可以防止整个DC故障,例如电源(检测)失败。通过多DC中的复制,它可以防止相关故障。您可以根据启用提交日志的成本与丢失最近写入的成本来决定需要多少弹性。

+0

我想,多DC和RF = 3它应该足够安全,以禁用提交日志。但是如果考虑到默认情况下它每10秒钟同步一次,那么有多少人可以获得更多的性能呢? – Serge 2013-03-01 16:03:11

+1

我还没有运行任何基准测试,但我猜测如果你运行了两个插入测试,一个启用了durable_writes,另一个禁用(如果禁用,那么这个列系列将绕过提交日志),它们将大致相同。然而,没有提交日志的最大优点是你不需要提交日志的单独磁盘(这是推荐的设置),所以对于磁盘少的系统,它可以为数据提供更多的I/O。 – Richard 2013-03-01 16:46:14