从http://docs.datastax.com/en/cassandra/2.0/cassandra/operations/ops_repair_nodes_c.html我知道
nodetool repair 命令修复给定数据范围内所有副本的不一致。
抛开问题:它是压实驱逐墓碑,对吧?那么比gc_grace 秒更频繁地运行nodetool repair 的要求只是为了确保所有数据都传播到适当的副本?这不应该是通常的场景吗?
无论出于何种原因,只要对副本的写入未完成,数据就会变得不一致。如果节点关闭、节点启动但网络连接关闭、队列已满且写入被删除、磁盘故障等,则可能会发生这种情况。
当通过比较默克尔树检测到不一致的数据时,数据的坏部分通过从具有较新数据的节点流式传输它们来修复。Streaming 是 Cassandra 中的一种基本机制,也用于将空节点引导到集群中。
您需要在 gc 宽限秒内运行修复的原因是,墓碑将同步到所有节点。如果一个节点缺少墓碑,那么它不会在压缩期间删除该数据。有墓碑的节点会在compaction过程中丢弃数据,然后当它们运行修复时,可以从丢失墓碑的节点复活被删除的数据。
| 归档时间: |
|
| 查看次数: |
3829 次 |
| 最近记录: |