2016-03-28 2 views
2

Я использую аэрокосмический прибор для тестирования. Я использую community edition. У кластера есть 2 узла. Я использую механизм хранения как устройство с SSD. Мой конфигурационный файл -aerospike: удалить всю запись в комплекте

namespace test { 
     replication-factor 2 
     memory-size 16G 
     default-ttl 0 

     storage-engine device { 
       device /dev/sdb1 
       data-in-memory false 
       write-block-size 128K 
     } 
} 

я набор по имени данные. После добавления в него записи 1M для тестирования, теперь я хочу удалить все в этом наборе (если возможно, также установить снимок). Я попробовал эту команду как node-

asinfo -v "set-config:context=namespace;id=test;set=data;set-delete=true;" 

Он работал до тех пор, пока я перезагрузил свой кластер (sudo /etc/init.d/aerospike restart как на узле). После перезагрузки все данные вернулись. Я прошел через эту ссылку http://www.aerospike.com/launchpad/deleting_sets_and_data.html, но не нашел ничего удобного.

ответ

3

EDIT копия вставленная из @ Сашина комментарий:

Aerospike 3.10.0 вводит [долговечные удаления] [1] механизм, который добавляет стойкость к удалению (только для Aerospike предприятия, хотя). Он реализован так называемыми записями Tombstone, записанными как последняя версия удаляемой записи. Он гарантирует, что удаленная запись не попала в память при холодном запуске (чтение с диска). Затем процесс дефрагментации в конечном итоге запускается и освобождает память и дисковое пространство от всех версий записей, включая надгробие. [1]: aerospike.com/docs/guide/durable_deletes.html

+1

Aerospike 3.10.0 представляет механизм [длительного удаления] [1], который добавляет устойчивость к удалению (только для Aerospike Enterprise). Он реализован так называемыми речами Tombstone, записанными как последняя версия удаляемой записи.Он гарантирует, что удаленная запись не попала в память при холодном запуске (чтение с диска). Затем процесс дефрагментации в конечном итоге запускается и освобождает память и дисковое пространство от всех версий записей, включая надгробие. [1]: http://www.aerospike.com/docs/guide/durable_deletes.html – Sasha

1

В нашем опыте производства специальный java deletion utility работает неплохо даже без недавно введенного durable deletes. Вы строите его из источников, поставить где-то вблизи кластера и запустить этот путь:

java -jar delete-set-1.0.0-jar-with-dependencies.jar -h <aerospike_host> -p 3000 -s <set_to_delete> -n <namespace_name> 

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

BTW asinfo способ удаления не сработал для нас. Записи оставались там на пару дней, поэтому мы использовали утилиту delete-set, которая работала сразу.

+0

Команда delete-set в настоящее время работает в цикле NSUP и требует как минимум 2 такта. Мы видели часы NSUP для завершения одного цикла (хотя последующий цикл обычно быстр). – kporter

1

В соответствии с Aerospike 3.12, выпущенным в марте 2017 года, в базе данных теперь поддерживается функция удаления всех данных в наборе или пространстве имен.

Пожалуйста, смотрите следующую документацию: http://www.aerospike.com/docs/reference/info#truncate

Который обеспечивает команду командной строки, которая выглядит следующим образом: asinfo срезанный: пространство имена =; множество =; LUT =

Он также может быть усеченной от клиента API, вот java-документация: http://www.aerospike.com/apidocs/java/com/aerospike/client/AerospikeClient.html и прокрутите вниз до метода «усечения».

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

Также обратите внимание, что в издании Enterprise эти удаления являются прочными и сохраняют перезапуск.