массовое удаление (усечение) в режиме онлайн пространства ключей cassandra

#cassandra

#cassandra

Вопрос:

Я читал, что после того, как вы разрядите узел, вы можете удалить файлы и затем перезапустить. Это работает нормально, но я попробовал это, только осушив все узлы, выключив весь кластер, удалив файлы и перезапустив.

Что произойдет, если я одновременно перезапущу только один узел? Насколько я понял, существует риск того, что перезапущенный узел будет принимать запросы на чтение и выполнять восстановление чтения с использованием данных из другой реплики.

Кто-нибудь знает наиболее надежную процедуру для усечения пространства ключей, оставляя весь кластер включенным для обслуживания других пространств ключей?

Ответ №1:

 $ bin/cassandra-cli -h localhost
[default@unknown] use keyspace1;
Authenticated to keyspace: Keyspace1
[default@Keyspace1] truncate standard1;     
standard1 truncated.
  

По замыслу, это не является защитой от гонки (для этого потребовалась бы блокировка в тяжелом весе); обычно вы сокращаете только CF, который в любом случае не обслуживает чтение в реальном времени. но если по какой-то причине вы должны сначала отключить восстановление чтения («обновить семейство столбцов standard1 с помощью read_repair_chance = 0»).

Комментарии:

1. Есть ли разница между запуском усечения из cli старой школы и cqlsh? Будет ли это работать с любым из них? Или вы рекомендуете использовать cassandra-cli для устаревших семейств col вместо выполнения усечения из cqlsh?

2. Использование cqlsh всегда будет работать. Нет причин использовать старый cli.