Cassandra 文档

版本

您正在查看预发布版本的文档。

sstablerepairedset

在某些环境中,对于大型数据,修复可能需要很长时间。使用此工具可以设置给定 SSTable 集的 repairedAt 状态,以便根据需要仅对未修复的 SSTable 运行修复。

请注意,运行修复(例如,通过 nodetool repair)不会设置此元数据的状态。只有通过此工具设置此元数据的状态才会。

在执行此工具之前,必须停止 Cassandra,否则会导致意外结果。注意:该脚本不会验证 Cassandra 是否已停止。

用法

sstablerepairedset --really-set <options> [-f <sstable-list> | <sstables>]

--really-set

如果您要真正设置状态,则为必需

--is-repaired

将 repairedAt 状态设置为上次修改时间

--is-unrepaired

将 repairedAt 状态设置为 0

-f

使用包含 SSTable 列表的文件作为输入

将大量 SSTable 设置为未修复状态

有许多方法可以以编程方式执行此操作。这种方法可能包括键空间和表的变量。

示例

find /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/* -name "*Data.db" -print0 | xargs -0 -I % sstablerepairedset --really-set --is-unrepaired %

将一个或多个 SSTable 设置为已修复状态

在修复后设置 repairedAt 状态,以将 SSTable 标记为已修复。同样,使用键空间和表名的变量是一个不错的选择。

示例

nodetool repair keyspace1 standard1
find /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/* -name "*Data.db" -print0 | xargs -0 -I % sstablerepairedset --really-set --is-repaired %

sstablemetadata 可用于查看使用此命令设置或取消设置的状态。

示例

sstablerepairedset --really-set --is-repaired /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db | grep "Repaired at" Repaired at: 1534443974000

sstablerepairedset --really-set --is-unrepaired /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db sstablemetadata /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/mc-1-big-Data.db | grep "Repaired at" Repaired at: 0

在脚本中使用命令

如果您知道两周前运行了修复,则可以执行以下操作

sstablerepairset --is-repaired -f <(find /var/lib/cassandra/data/.../ -iname "*Data.db*" -mtime +14)