Как удалить надгробия таблицы cassandra?

Мой OpsCenter выдает мне результат «Ошибка» в службе производительности подсчета надгробий. Я прочитал эту статью и обнаружил, что вставка значения NULL может быть случайной .

Поэтому я пытаюсь решить эту проблему, используя следующие процедуры:

  1. Установите для столбца NULL таблицы channels и articles значение ''. И для проверки никаких вставок в эти две таблицы нет.

  2. Установите gc_grace_seconds в 0 с помощью команд: alter table channels with gc_grace_seconds = 0 alter table articles with gc_grace_seconds = 0

  3. Обрезать таблицу bestpractice_results в ключевом пространстве OpsCenter.

  4. Перезапустите агентов и OpsCenter с помощью команд: service datastax-agent restart service opscenterd restart

Но когда OpsCenter запускал обычную проверку производительности (каждую минуту), снова появлялась следующая информация «Ошибка». И количество надгробий не изменилось (т.е. 23552 и 1374)

А у меня вопрос:

  1. Как удалить эти надгробия, когда нет операций вставки в две таблицы? Нужен ли мне repair кластер?

введите здесь описание изображения

Версия OpsCenter: 6.0.3 Версия Cassandra: 2.1.15.1423 Версия DataStax Enterprise: 4.8.10


person feng1122    schedule 25.11.2016    source источник
comment
Вы также должны инициировать уплотнение, чтобы надгробия были удалены из ваших файлов данных.   -  person Ralf    schedule 25.11.2016
comment
Спасибо. Я запустил уплотнение с помощью команды nodetool -p portNumber compact keyspace channels, но количество надгробий все еще не изменилось. я должен reboot datastax ?   -  person feng1122    schedule 25.11.2016
comment
Перезагрузка точно не требуется. Вы запускали уплотнение на каждом узле?   -  person Ralf    schedule 25.11.2016
comment
Я следую ссылке для запуска compact для таблицы channels , я думаю, что compact - это концепция таблицы. Как запустить компакт для каждого узла?   -  person feng1122    schedule 25.11.2016
comment
Вам нужно повторить команду nodetool для каждого узла. Используйте -h, чтобы указать хосты, на которых работают ваши узлы.   -  person Ralf    schedule 25.11.2016
comment
Следуя ссылке, указанной Cassandra will fully drop those tombstones when a compaction triggers, only after local_delete_time + gc_grace_seconds as defined on the table the data belongs to. Remember that all the nodes are supposed to have been repaired within gc_grace_seconds to ensure a correct distribution of the tombstones and prevent deleted data from reappearing as mentioned above., я сначала запускаю nodetool -h hosts repair на каждом узле, а затем запускаю nodetool -p portNumber compact на каждом узле, надгробная плита исчезнет, ​​правильный ли порядок?   -  person feng1122    schedule 25.11.2016
comment
Да, это должно сработать.   -  person Ralf    schedule 25.11.2016
comment
Но я думаю, что сначала я должен установить gc_grace_seconds , кажется, что 0 не является правильным значением, так как all the nodes are supposed to have been repaired within gc_grace_seconds, я прав?   -  person feng1122    schedule 25.11.2016
comment
Установка gc_grace_seconds = 0 опасна, если у вас более одного узла, так как вы рискуете воскресить удаленные данные в случае, если ваш кластер будет разбит на разделы из-за сбоев в сети или отдельные узлы не работают, а ваше пространство ключей настроено на избыточность данных. Но это был не ваш вопрос. Ваш вопрос был о том, как немедленно избавиться от надгробий. А если вы хотите сразу зачистить все надгробия, то установка gc_grace_seconds = 0 обязательна.   -  person Ralf    schedule 25.11.2016
comment
Понятно. Большое спасибо.   -  person feng1122    schedule 25.11.2016


Ответы (2)


Пожалуйста, перейдите по ссылке ниже, чтобы получить полную информацию об удалении и надгробии. Это может быть полезно для вас. http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html

person Big Data Guy    schedule 25.11.2016
comment
Спасибо. Я не уверен в этом предложении Remember that all the nodes are supposed to have been repaired within gc_grace_seconds to ensure a correct distribution of the tombstones and prevent deleted data from reappearing as mentioned above. Что означает repair ? Это означает reboot кластер? - person feng1122; 25.11.2016
comment
Ознакомьтесь с документацией по ремонту: ./nodetool help repair - person Ralf; 25.11.2016

С Cassandra 3.10+ используйте

nodetool garbagecollect keyspace_name table_name

Проверьте https://docs.datastax.com/en/dse/5.1/dse-admin/datastax_enterprise/tools/nodetool/toolsGarbageCollect.html

person Martin Tapp    schedule 11.09.2018
comment
Большое спасибо! Это помогло освободить место на диске. - person charybr; 16.05.2020