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