2016-03-28 10 views
2

Ich verwende Aerospike zum Testen. Ich benutze Community Edition. Der Cluster hat 2 Knoten. Ich verwende Storage Engine als Gerät mit SSD. Meine Konfigurationsdatei -Aerospike: Löschen aller Datensätze in einem Satz

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 
     } 
} 

I Daten Namen gesetzt haben. Nachdem ich 1M Datensatz zum Testen hinzugefügt habe, möchte ich jetzt alles in diesem Set löschen (wenn möglich auch Drop Set). Ich habe versucht, diesen Befehl auf beiden node-

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

Es funktionierte, bis ich meine Cluster neu gestartet (sudo /etc/init.d/aerospike restart auf beiden Knoten). Nach dem Neustart sind alle Daten zurück gekommen. Ich bin durch diesen Link http://www.aerospike.com/launchpad/deleting_sets_and_data.html gegangen, finde aber nichts bequemes.

Antwort

3

EDIT Kopie eingefügt von @ Sashas Kommentar:

Aerospike 3.10.0 einleitet [dauerhaft Löschungen] [1] Mechanismus, der die Persistenz der Streichung fügt hinzu (nur für Unternehmen Aerospike obwohl). Es wird durch so genannte Tombstone-Datensätze implementiert, die als letzte Version des zu löschenden Datensatzes geschrieben werden. Es garantiert, dass kein gelöschter Datensatz beim Kaltstart (vom Datenträger gelesen) in den Speicher gelangt. Anschließend wird der Defragmentierungsprozess ausgeführt und Speicherplatz und Festplattenspeicher von allen Datensatzversionen einschließlich Tombstone freigegeben. [1]: aerospike.com/docs/guide/durable_deletes.html

+1

Aerospike 3.10.0 führt [dauerhafte Löschungen] [1] -Mechanismus ein, der die Persistenz zum Löschen hinzufügt (nur für Aerospike Enterprise). Es wird von so genannten Tombstone-Restres implementiert, die so geschrieben werden, dass die letzte Version des Datensatzes gelöscht wird.Es garantiert, dass kein gelöschter Datensatz beim Kaltstart (vom Datenträger gelesen) in den Speicher gelangt. Anschließend wird der Defragmentierungsprozess ausgeführt und Speicherplatz und Festplattenspeicher von allen Datensatzversionen einschließlich Tombstone freigegeben. [1]: http://www.aerospike.com/docs/guide/durable_deletes.html – Sasha

1

In unserer Produktion Erfahrung Spezial java deletion utility funktioniert auch ohne kürzlich eingeführt durable deletes ganz gut. Sie bauen es aus Quellen, irgendwo in den Nähe der Cluster setzen und auf diese Weise auszuführen:

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

jedoch in unserer prod Umgebung Kaltstart sind recht seltene Ereignisse, im Grunde, wenn Aero-Spike stürzt ab. Und der Datenfluss ist ziemlich hoch, so dass die Defragmentierung früher einsetzt und wir dieses Zombie-Record-Problem nicht haben.

BTW asinfo Weg des Löschens hat nicht für uns funktioniert. Die Aufzeichnungen blieben dort für einige Tage, also benutzen wir delete-set Dienstprogramm, das sofort funktionierte.

+0

Der Befehl delete-set arbeitet derzeit mit NSUP-Zyklen und benötigt mindestens 2 Zyklen. Wir haben NSUP-Stunden gesehen, um einen einzigen Zyklus zu beenden (obwohl der nachfolgende Zyklus normalerweise schnell ist). – kporter

1

Ab Aerospike 3.12, das im März 2017 veröffentlicht wurde, wird jetzt die Funktion zum Löschen aller Daten in einem Satz oder Namespace in der Datenbank unterstützt.

Bitte beachten Sie die folgende Dokumentation: http://www.aerospike.com/docs/reference/info#truncate

, die den Befehlszeile-Befehl, der wie folgt aussieht sieht vor: asinfo truncate: namespace =; set =; lut =

Es kann auch vom Client abgeschnitten APIs, hier ist die Java-Dokumentation: http://www.aerospike.com/apidocs/java/com/aerospike/client/AerospikeClient.html und scrollen Sie nach unten auf die "truncate" -Methode.

Bitte beachten Sie, dass diese Funktion optional eine Zeitangabe benötigt. Auf diese Weise können Sie Datensätze löschen und dann neue Datensätze einfügen. Wenn Zeitstempel verwendet werden, stellen Sie bitte sicher, dass Ihre Serveruhren gut synchronisiert sind.

Beachten Sie auch, dass diese Löschungen in der Enterprise-Edition dauerhaft sind und den Neustart überleben.

Verwandte Themen