如果直流停机,我应该担心卡桑德拉提示吗?
Should I be worried about cassandra hints in case of dc downtime?
我很快就会从 1 个 dc 扩展到 2 个 dc,因此我有点担心在使用 LOCAL_QUORUM 时会发生什么,我有一个 dc 出现故障。
假设我有 2 个 dc:dc1 和 dc2。密钥空间 A 将同时沿 d1 和 d2 复制。
现在,如果在使用本地仲裁在 dc1 中写入时无法将我的写入复制到 dc2,那么提示有多大会成为一个问题。我知道写入将被认为是成功的,因为使用本地仲裁,但由于需要复制数据以便可以在 dc2 中读取相同的数据以进行分析,因此 cassandra 提示的构建会成为问题吗?
这实际上取决于写入量、您希望如何从停机时间恢复,以及停机时间可能有多大:
- Cassandra 无论如何都会向所有节点发送写入 -
LOCAL_*
只是说确认应该来自本地 DC
- 如果另一个 DC 关闭,提示将写入磁盘,并在 DC 启动后重播
- 如果 DC 停机时间超过
max_hint_window_in_ms
,那么您无论如何都需要执行修复,因此重播提示只会给服务器增加额外的负载
如果您预计 DC 会在更长的时间内一直停机,您可以通过 hinted_handoff_disabled_datacenters
设置禁用为另一个 DC 写入提示 - 但您需要在 DC 恢复后执行修复。
P.S。我看到 datastax
标记 - 这是否意味着您正在使用 DSE?如果是,什么版本?因为在 DSE 6.x 中,NodeSync 可以赶上丢失的数据。
我很快就会从 1 个 dc 扩展到 2 个 dc,因此我有点担心在使用 LOCAL_QUORUM 时会发生什么,我有一个 dc 出现故障。
假设我有 2 个 dc:dc1 和 dc2。密钥空间 A 将同时沿 d1 和 d2 复制。
现在,如果在使用本地仲裁在 dc1 中写入时无法将我的写入复制到 dc2,那么提示有多大会成为一个问题。我知道写入将被认为是成功的,因为使用本地仲裁,但由于需要复制数据以便可以在 dc2 中读取相同的数据以进行分析,因此 cassandra 提示的构建会成为问题吗?
这实际上取决于写入量、您希望如何从停机时间恢复,以及停机时间可能有多大:
- Cassandra 无论如何都会向所有节点发送写入 -
LOCAL_*
只是说确认应该来自本地 DC - 如果另一个 DC 关闭,提示将写入磁盘,并在 DC 启动后重播
- 如果 DC 停机时间超过
max_hint_window_in_ms
,那么您无论如何都需要执行修复,因此重播提示只会给服务器增加额外的负载
如果您预计 DC 会在更长的时间内一直停机,您可以通过 hinted_handoff_disabled_datacenters
设置禁用为另一个 DC 写入提示 - 但您需要在 DC 恢复后执行修复。
P.S。我看到 datastax
标记 - 这是否意味着您正在使用 DSE?如果是,什么版本?因为在 DSE 6.x 中,NodeSync 可以赶上丢失的数据。