2012-10-17 20 views
6

Obecnie oceniamy kilka kluczowych magazynów danych i wartości, aby zastąpić starszą isam aktualnie używaną przez główną aplikację (przez 20 lat!) ...Czy usługa LevelDB obsługuje tworzenie kopii zapasowych na gorąco (lub odpowiednik)?

Problem polega na tym, że nasz obecny isam nie obsługuje odzyskiwanie po awarii.

Więc LevelDB seemd Ok do nas (także sprawdzenie BerkleyDB itp)

Ale wpadliśmy de kwestii gorących kopii zapasowych, a biorąc pod uwagę fakt, że LevelDB jest biblioteka, a nie serwer, to jest dziwne, aby poprosić o "hot backup", ponieważ intuicyjnie implikowałoby to zewnętrzny proces tworzenia kopii zapasowej.

Być może ktoś chciałby zaproponować opcje (lub znane rozwiązania)?

Na przykład: - Hot backup przez wewnętrzny gwint głównego aplikatora? - Hot backup poprzez samo kopiowanie katalogu danych LevelDB?

góry dzięki

Odpowiedz

6

Można zrobić iteracji migawki poprzez LevelDB, który jest prawdopodobnie najlepszym sposobem, aby gorący kopię (nie zapomnij zamknąć iterator).

Do tworzenia kopii zapasowych LevelDB przez system plików użyłem wcześniej skryptu, który tworzy twarde linki do wszystkich plików .sst (które są niezmienne po zapisaniu), oraz normalne kopie logów (i plików MANIFEST, CURRENT itp.), do katalogu kopii zapasowych na tej samej partycji. Jest to szybkie, ponieważ pliki dziennika są małe w porównaniu do plików .sst.

Baza danych musi być zamknięta (przez aplikację) podczas wykonywania kopii zapasowej, ale czas wykonania będzie oczywiście znacznie krótszy niż czas potrzebny na skopiowanie całego pliku DB na inną partycję lub przesłanie go do S3 itd. Może to zrobić po ponownym otwarciu bazy danych przez aplikację.

2

LMDB jest wbudowanym magazynem wartości kluczy, ale w przeciwieństwie do LevelDB obsługuje współbieżność wieloprocesową, więc można użyć zewnętrznego procesu tworzenia kopii zapasowej. Narzędzie mdb_copy tworzy atomową, gorącą kopię bazy danych, a aplikacja nie musi zatrzymywać się ani wykonywać żadnych specjalnych czynności podczas wykonywania kopii zapasowej. http://symas.com/mdb/

1

Trochę się spóźniłem na to pytanie, ale są widły poziomu LevelDB, które oferują dobre możliwości tworzenia kopii zapasowych na żywo, takie jak HyperLevelDB i RocksDB. Oba są dostępne jako moduły npm, np. Level-hyper i level-rocksdb. Aby uzyskać więcej informacji, zobacz How to backup RocksDB? i HyperDex Question.