| = sstablerepairedset |
| |
| Repairs can take a very long time in some environments, for large sizes |
| of data. Use this tool to set the repairedAt status on a given set of |
| sstables, so that repairs can be run on only un-repaired sstables if |
| desired. |
| |
| Note that running a repair (e.g., via nodetool repair) doesn't set the |
| status of this metadata. Only setting the status of this metadata via |
| this tool does. |
| |
| ref: https://issues.apache.org/jira/browse/CASSANDRA-5351 |
| |
| Cassandra must be stopped before this tool is executed, or unexpected |
| results will occur. Note: the script does not verify that Cassandra is |
| stopped. |
| |
| == Usage |
| |
| sstablerepairedset --really-set <options> [-f <sstable-list> | |
| <sstables>] |
| |
| [cols=",",] |
| |=== |
| |--really-set |required if you want to really set the status |
| |--is-repaired |set the repairedAt status to the last modified time |
| |--is-unrepaired |set the repairedAt status to 0 |
| |-f |use a file containing a list of sstables as the input |
| |=== |
| |
| == Set a lot of sstables to unrepaired status |
| |
| There are many ways to do this programmatically. This way would likely |
| include variables for the keyspace and table. |
| |
| Example: |
| |
| .... |
| find /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/* -name "*Data.db" -print0 | xargs -0 -I % sstablerepairedset --really-set --is-unrepaired % |
| .... |
| |
| == Set one to many sstables to repaired status |
| |
| Set the repairedAt status after a repair to mark the sstables as |
| repaired. Again, using variables for the keyspace and table names is a |
| good choice. |
| |
| Example: |
| |
| .... |
| nodetool repair keyspace1 standard1 |
| find /var/lib/cassandra/data/keyspace1/standard1-d936bd20a17c11e8bc92a55ed562cd82/* -name "*Data.db" -print0 | xargs -0 -I % sstablerepairedset --really-set --is-repaired % |
| .... |
| |
| == Print metadata showing repaired status |
| |
| sstablemetadata can be used to view the status set or unset using this |
| command. |
| |
| Example: |
| |
| ____ |
| 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 |
| ____ |
| |
| == Using command in a script |
| |
| If you know you ran repair 2 weeks ago, you can do something like the |
| following: |
| |
| .... |
| sstablerepairset --is-repaired -f <(find /var/lib/cassandra/data/.../ -iname "*Data.db*" -mtime +14) |
| .... |