sobota, 10 marca 2018

Cassandra - kopie zapasowe

Tworzenie kopii zapasowych w Cassandrze polega na wykonywaniu migawek wszystkich plików z danymi (pliki SSTable). Możesz zrobić migawkę wszystkich przestrzeni kluczy (z ang. "keyspaces") lub pojedyńczej.

Migawkę tworzymy komendą
nodetool snapshot
lub
 nodetool -h adres_serwera -p numer_portu snapshot
Powyższe komendy utworzą migawki wszystkich przestrzeni kluczy. Jeżeli chcemy zrobić migawkę konkretnej przestrzeni to wpisujemy:
nodetool snapshot nazwa_przestrzeni_kluczy
Po wykonaniu komendy podany zostanie nam numer migawki.

Dane kopii (pliki o rozszerzeniu "db") znajdziemy w "katalog_Cassandry/data/nazwa_przestrzeni_kluczy/nazwa_tabeli/snapshots/numer_migawki".

Poprzednie kopie nie są usuwane więc warto przedtem wywołać
nodetool snapshot clearsnapshot
lub
nodetool snapshot clearsnapshot nazwa_przestrzeni_kluczy
Przywracanie danych wymaga wszystkich plików migawek dla tabeli, a jeżeli używane są inkrementowane kopie zapasowe to wszystkie pliki inkrementowanych kopii zapasowych utworzone po tym jak wykonana została migawka.

Generalnie przed przystąpieniem do przywracania danch powinno się usunąć wszystkie dane z tabeli i ustawić odpowiednią konsystencję:
truncate nazwa_przestrzeni_klucz.nazwa_tabeli;
consistency all;
Cassandra może przywracać dane kiedy istnieje schemat tabel. Jeżeli tego nie zrobiłeś to możesz albo:
- przywrócić dane z migawki,
- ponownie stworzyć schemat
lub:
- stworzyć ponownie schemat,
- przywrócić migawkę,
- uruchomić "nodetool refresh".

Aby przywrócić dane do konkretnej tabeli należy:
1) wyłączyć Cassandrę,
2) usunąć wszystkie pliki z "katalog_Cassandry/commitlog",
3) usunąć wszystkie pliki o rozszerzeniu "db" z "katalog_Cassandry/data/nazwa_przestrzeni_kluczy/nazwa_tabeli",
4) skopiować zawartość katalogu "katalog_Cassandry/data/nazwa_przestrzeni_kluczy/nazwa_tabeli/snapshots/numer_migawki" do "katalog_Cassandry/data/nazwa_przestrzeni_kluczy/nazwa_tabeli" i zmienić właściciela oraz grupę na odpowiednie dla serwera Cassandry (zwykle jest to "cassandra" i "cassandra"),
5) włączyć Cassandrę.

W celu automatyzacji powyższych zadań stworzone zostało narzędzie Carmela.