备份并备份每个节点上的

Unite professionals to advance email dataset knowledge globally.
Post Reply
Bappy11
Posts: 446
Joined: Sun Dec 22, 2024 9:33 am

备份并备份每个节点上的

Post by Bappy11 »

什么是提示切换?
当节点由于过载、网络问题或硬件问题而变得无响应时,故障检测器会将该节点标记为关闭,并且如果在 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 树。
Post Reply