备份并备份每个节点上的
Posted: Sun Feb 09, 2025 8:08 am
什么是提示切换?
当节点由于过载、网络问题或硬件问题而变得无响应时,故障检测器会将该节点标记为关闭,并且如果在 cassandra.yaml 文件中启用了提示切换,则协调器会暂时存储错过的写入。
提示存储在 system.hints表中的本地系统 键空间 中 。它包括已关闭节点的目标 ID、数据的提示 ID(时间 UUID)以及标识 Cassandra 版本的消息 ID。提示会在相应节点恢复在线时写入该节点。如果节点关闭时间超过 max_hint_window_in_ms (默认值:3 小时),协调器节点将丢弃存储的提示。
什么是反熵修复?
为了在所有节点上实现数据一致性,我们必须手动运行 nodetool repair 或使用 Opscenter 进行反熵。
反熵修复是一项成本高昂的操作,会给集群中的服务器资源(CPU、内存、硬盘和网络)带来压力。它涉及 Merkle-Tree 构建和跨节点的大量数据流。
修复分为两个阶段:构建数据的 Merkle 树,然后让副本根据需要比较并传输它们的树之间的差异。
为什么已经有两种自动机制可用,我们还需要第三种机制?
当节点停机时间超过“max_hint_window_in_ms”(默认值:3 小时)时。
必须在“gc_grace_seconds”(默认值:10 天)之前执行反熵修复,以防止墓碑复活。
性能影响
在第一阶段,可能会发生大量磁盘 I/O,因为它会执行验证压缩并通过对所有 SSTable 的每一行进行哈希处理来构建 Merkle 树。此操作会占用大量资源,会影响 CPU、内存和磁盘 I/O。
此外,当检测到 Merkletree 差异时,向远程节点传输大量数据可能会超出网络带 波斯尼亚和黑塞哥维那电报数据 宽的承受能力。
运行反熵修复(手动修复)
何时运行手动修复?
每周安排维修以维护节点健康。
在发生故障后将节点重新纳入集群时。
在包含不经常读取的数据的节点上。
更新已关闭的节点上的数据。
在 gc_grace_seconds 的值内在每个节点上至少运行一次修复操作。
恢复丢失的数据或损坏的 SSTables。
nodetool repair命令中基本上有三组主要选项,我们需要根据您的要求从中选择选项:
增量/完整
并行/顺序
带分区范围 / 不带分区范围
应该怎么修复呢?
您应该根据集群上的数据/负载或工作负载要求每周到每月运行一次全面修复,并每天或在需要时运行增量修复。
完整/增量修复
在完全修复中,Cassandra 会比较该节点的所有 SSTable 并进行必要的修复。默认设置是增量修复。增量修复会保留已修复的数据,并且仅为未修复的 SSTable 构建 Merkle 树。
当节点由于过载、网络问题或硬件问题而变得无响应时,故障检测器会将该节点标记为关闭,并且如果在 cassandra.yaml 文件中启用了提示切换,则协调器会暂时存储错过的写入。
提示存储在 system.hints表中的本地系统 键空间 中 。它包括已关闭节点的目标 ID、数据的提示 ID(时间 UUID)以及标识 Cassandra 版本的消息 ID。提示会在相应节点恢复在线时写入该节点。如果节点关闭时间超过 max_hint_window_in_ms (默认值:3 小时),协调器节点将丢弃存储的提示。
什么是反熵修复?
为了在所有节点上实现数据一致性,我们必须手动运行 nodetool repair 或使用 Opscenter 进行反熵。
反熵修复是一项成本高昂的操作,会给集群中的服务器资源(CPU、内存、硬盘和网络)带来压力。它涉及 Merkle-Tree 构建和跨节点的大量数据流。
修复分为两个阶段:构建数据的 Merkle 树,然后让副本根据需要比较并传输它们的树之间的差异。
为什么已经有两种自动机制可用,我们还需要第三种机制?
当节点停机时间超过“max_hint_window_in_ms”(默认值:3 小时)时。
必须在“gc_grace_seconds”(默认值:10 天)之前执行反熵修复,以防止墓碑复活。
性能影响
在第一阶段,可能会发生大量磁盘 I/O,因为它会执行验证压缩并通过对所有 SSTable 的每一行进行哈希处理来构建 Merkle 树。此操作会占用大量资源,会影响 CPU、内存和磁盘 I/O。
此外,当检测到 Merkletree 差异时,向远程节点传输大量数据可能会超出网络带 波斯尼亚和黑塞哥维那电报数据 宽的承受能力。
运行反熵修复(手动修复)
何时运行手动修复?
每周安排维修以维护节点健康。
在发生故障后将节点重新纳入集群时。
在包含不经常读取的数据的节点上。
更新已关闭的节点上的数据。
在 gc_grace_seconds 的值内在每个节点上至少运行一次修复操作。
恢复丢失的数据或损坏的 SSTables。
nodetool repair命令中基本上有三组主要选项,我们需要根据您的要求从中选择选项:
增量/完整
并行/顺序
带分区范围 / 不带分区范围
应该怎么修复呢?
您应该根据集群上的数据/负载或工作负载要求每周到每月运行一次全面修复,并每天或在需要时运行增量修复。
完整/增量修复
在完全修复中,Cassandra 会比较该节点的所有 SSTable 并进行必要的修复。默认设置是增量修复。增量修复会保留已修复的数据,并且仅为未修复的 SSTable 构建 Merkle 树。