2012-10-17 23 views
6

Attualmente stiamo valutando diversi archivi di dati chiave + valore, per sostituire un isam più vecchio attualmente in uso da owr main application (per 20 anni qualcosa!) ...LevelDB supporta backup a caldo (o equivalenti)?

Il problema è che il nostro attuale isam non supporta recuperi da incidente.

Così LevelDB sinceramente interessato Ok per noi (anche controllando BerkleyDB, ecc)

Ma ci siamo imbattuti in de domanda di hot-backup, e, dato il fatto che LevelDB è una libreria, e non un server, è dispari per chiedere "hot backup", come implicherebbe intuitivamente un processo di backup esterno.

Forse qualcuno vorrebbe proporre opzioni (o soluzioni note)?

Ad esempio: - Backup a caldo tramite una filettatura interna dell'applicazione principale? - Backup a caldo semplicemente copiando la directory dei dati LevelDB?

Grazie in anticipo

risposta

6

Si può fare un'iterazione snapshot attraverso un LevelDB, che è probabilmente il modo migliore per fare una copia a caldo (non dimenticare di chiudere l'iteratore).

Per eseguire il backup di un LevelDB tramite il filesystem, ho precedentemente utilizzato uno script che crea collegamenti fisici a tutti i file .sst (che sono immutabili una volta scritti) e copie normali del log (e dei file MANIFEST, CURRENT ecc.), in una directory di backup sulla stessa partizione. Questo è veloce poiché i file di registro sono piccoli rispetto ai file .sst.

Il DB deve essere chiuso (dall'applicazione) mentre il backup viene eseguito, ma il tempo impiegato sarà ovviamente molto inferiore al tempo impiegato per copiare l'intero DB in una partizione diversa, o caricare su S3 ecc. Ciò può essere fatto una volta che il DB viene riaperto dall'applicazione.

2

LMDB è un archivio di valori chiave incorporato, ma a differenza di LevelDB supporta la concorrenza multiprocesso in modo da poter utilizzare un processo di backup esterno. L'utility mdb_copy eseguirà un backup a caldo atomico di un database, la tua app non dovrà fermarsi o fare qualcosa di speciale durante l'esecuzione del backup. http://symas.com/mdb/

1

Sto arrivando un po 'in ritardo a questa domanda, ma ci sono forchette di LevelDB che offrono buone funzionalità di backup live, come HyperLevelDB e RocksDB. Entrambi sono disponibili come moduli npm, cioè level-hyper e level-rocksdb. Per ulteriori discussioni, vedi How to backup RocksDB? e HyperDex Question.

Problemi correlati