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