7

現在、owr のメイン アプリケーションで現在使用されている古い isam を置き換えるために、いくつかのキーと値のデータ ストアを評価しています (20 年間!) ...

問題は、現在の isam がクラッシュ リカバリをサポートしていないことです。

したがって、LevelDB は問題ないように見えました (BerkleyDB などもチェックしています)

しかし、ホット バックアップの問題に遭遇しました。LevelDB がサーバーではなくライブラリであるという事実を考えると、「ホット バックアップ」を要求するのは奇妙です。これは直感的に外部バックアップ プロセスを意味するからです。

おそらく、誰かがオプション (または既知の解決策) を提案したいと思いますか?

例: - メイン アプリケーションの内部スレッドを介したホット バックアップ ? - LevelDBのデータディレクトリをコピーするだけのホットバックアップ?

前もって感謝します

4

3 に答える 3

8

LevelDB を介してスナップショットの反復を行うことができます。これはおそらくホット コピーを作成するための最良の方法です (反復子を閉じることを忘れないでください)。

ファイルシステム経由で LevelDB をバックアップするために、すべての .sst ファイル (一度書き込まれると不変) へのハード リンクと、ログ (および MANIFEST、CURRENT など) ファイルの通常のコピーをバックアップ ディレクトリに作成するスクリプトを以前に使用しました。同じパーティションに。ログ ファイルは .sst ファイルに比べて小さいため、これは高速です。

バックアップの実行中は (アプリケーションによって) DB を閉じる必要がありますが、かかる時間は、DB 全体を別のパーティションにコピーしたり、S3 などにアップロードしたりするのにかかる時間よりもはるかに短いことは明らかです。 DB はアプリケーションによって再度開かれます。

于 2013-08-11T01:02:44.643 に答える
1

この質問には少し遅れていますが、HyperLevelDB や RocksDB など、優れたライブ バックアップ機能を提供する LevelDB のフォークがあります。これらはどちらも npm モジュール、つまり level-hyper と level-rocksdb として利用できます。詳細については、RocksDB をバックアップする方法を参照してください。およびHyperDex の質問

于 2016-01-10T17:24:55.520 に答える