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

在指令碼中使用指令

如果您知道您在 2 週前執行修復,您可以執行類似下列動作

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