2012-01-17 27 views
5

Zastanawiam się, czy funkcja "migawki" biblioteki LevelDB może utworzyć odniesienie migawki, które można zapisać nawet po zamknięciu otwartego obiektu bazy danych (i tym samym ponownie użyte w następnym otwarciu).Czy migawki LevelDB mogą przetrwać zamknięcie bazy danych?

Podejrzewam, że nie, co prowadzi do następstwa: czy istnieje dobry/zalecany sposób utworzenia spójnego tworzenia kopii zapasowej bazy danych z chwilą migawki, najlepiej nawet podczas gdy inne działania są kontynuowane? (To znaczy, bez iterowania całego gamma migawek za pośrednictwem interfejsu API?)

(Zasadniczo szukam czegoś analogicznego do zapisania plików dziennika JDB z dodatkowymi plikami JDB BerkeleyDB-JE przez określone miejsce w punkcie kontrolnym.)

Odpowiedz

3

Dobre podejście polegałoby na zamknięciu bazy danych, a następnie łączeniu wszystkich plików sst (cp -l) i kopiowaniu wszystkich plików innych niż sst. W ten sposób skopiujesz tylko niewielką ilość danych (rozmiar logu, domyślnie 4 MB). Następnie możesz ponownie otworzyć DB.

Musisz zablokować, podczas gdy tak się stanie, ale mam nadzieję, że powinno być szybkie.

+0

Aha - dokładnie tego szukałem! (I bardzo podobne do tego, co zrobiłem z plikami dzienników BDB-JE.) Podejrzewałem, że coś takiego jest możliwe, ale przeoczyłem, że wszystkie zapisy są scalane w nowe pliki/i-węzły. Mogę obejść chwilkę blisko. – gojomo

1

nie podejrzewają, co prowadzi do obserwacji: czy istnieje dobry/zalecany sposób, aby spójną kopię zapasową bazy danych, jak z migawką natychmiastowe, idealnie nawet podczas innych aktywności trwa? (To znaczy, brakuje iteracji całą migawkę keyrange za pośrednictwem interfejsu API?)

nie mam nic leveldb który pozwoliłby zaoszczędzić migawkę, poza tym, co ty nie naprawdę widział chcesz to zrobić: utwórz nową instancję klasy LEVEldb, wykonaj iterację w całym bieżącym zakresie kluczy migawki i zapisz ją w nowej instancji leveldb. Czy twoja sytuacja uniemożliwia ci to?

+0

Tworzenie ręcznej migawki (kopia) byłoby jednym podejściem awaryjnym. Innym byłoby poleganie na możliwościach migawki kopiowania przy zapisywaniu w systemie plików/zarządzaniu woluminami. Ale posiadanie możliwości w samej bibliotece, dla wydajności i prostoty, byłoby plusem. – gojomo