Поддерживает ли LevelDB горячее резервное копирование (или эквивалентное)?

В настоящее время мы оцениваем несколько хранилищ данных «ключ + значение», чтобы заменить старый isam, который в настоящее время используется нашим основным приложением (уже 20 с чем-то лет!) ...

Проблема в том, что наш текущий isam не поддерживает восстановление после сбоя.

Так что LevelDB показался нам нормальным (также проверял BerkleyDB и т.д.)

Но мы столкнулись с вопросом о горячем резервном копировании, и, учитывая тот факт, что LevelDB — это библиотека, а не сервер, странно просить «горячее резервное копирование», поскольку это интуитивно подразумевает внешний процесс резервного копирования.

Возможно, кто-то хотел бы предложить варианты (или известные решения)?

Например: - Горячее резервное копирование через внутренний поток основного приложения? - Горячее резервное копирование простым копированием каталога данных LevelDB?

заранее спасибо


person artejera    schedule 17.10.2012    source источник


Ответы (3)


Вы можете сделать итерацию моментального снимка через LevelDB, что, вероятно, является лучшим способом сделать горячую копию (не забудьте закрыть итератор).

Для резервного копирования LevelDB через файловую систему я ранее использовал сценарий, который создает жесткие ссылки на все файлы .sst (которые неизменяемы после записи) и обычные копии файлов журнала (и MANIFEST, CURRENT и т. д.) в каталог резервного копирования. на том же разделе. Это быстро, так как файлы журнала меньше по сравнению с файлами .sst.

БД должна быть закрыта (приложением) во время резервного копирования, но время, очевидно, будет намного меньше, чем время, необходимое для копирования всей БД в другой раздел или загрузки на S3 и т. д. Это можно сделать после того, как БД повторно открывается приложением.

person gub    schedule 11.08.2013

LMDB — это встроенное хранилище значений ключей, но, в отличие от LevelDB, оно поддерживает параллелизм нескольких процессов, поэтому вы можете использовать внешний процесс резервного копирования. Утилита mdb_copy сделает атомарное горячее резервное копирование базы данных, вашему приложению не нужно останавливаться или делать что-то особенное во время резервного копирования. http://symas.com/mdb/

person hyc    schedule 09.12.2013

Я немного запоздал с этим вопросом, но есть форки LevelDB, которые предлагают хорошие возможности живого резервного копирования, такие как HyperLevelDB и RocksDB. Оба они доступны в виде модулей npm, то есть level-hyper и level-rocksdb. Дополнительные сведения см. в разделе Как сделать резервную копию RocksDB? и Вопрос HyperDex.

person dejs    schedule 10.01.2016