CouchDB のバックアップとデータベースのクローン作成
-
02-07-2019 - |
質問
CMS 風のアプリケーションとして CouchdDB を検討しています。実稼働データベースのバックアップに関する一般的なパターン、ベスト プラクティス、ワークフローのアドバイスにはどのようなものがありますか?
私は、開発やテストで使用するデータベースのクローンを作成するプロセスに特に興味があります。
ライブ実行中のインスタンスの下からディスク上のファイルをコピーするだけで十分ですか?2 つのライブ実行インスタンス間でデータベース データのクローンを作成できますか?
使用するテクニックについてのアドバイスと説明をいただければ幸いです。
解決
CouchDB はレプリケーションをサポートしているため、CouchDB の別のインスタンスにレプリケートし、そこからバックアップするだけで、変更を書き込む場所を妨げることがなくなります。
http://wiki.apache.org/couchdb/FrequentlyAskedQuestions#how_replication
文字通り、CouchDB インスタンスに POST リクエストを送信してレプリケーション先を指示すると、動作します(tm)
編集:I/O ヒットを許容できる限り、実行中のデータベースからファイルを cp アウトするだけです。
他のヒント
もう 1 つ注意すべき点は、ライブ データベースの下からファイルをコピーできることです。おそらく大規模なデータベースがある可能性があることを考慮すると、それをテスト/運用マシンから別のマシンに OOB コピーするだけで済みます。
マシンの書き込み負荷によっては、コピー後にレプリケーションをトリガーして、ファイルのコピー時に進行中の書き込みを収集することをお勧めします。ただし、データベース全体をレプリケーションするよりも、少数のレコードをレプリケーションする方が高速です。
参考として、以下を参照してください。 http://wiki.apache.org/couchdb/FilesystemBackups
CouchDB は、次のような最新のファイルシステムによって提供されるファイルシステム スナップショットとも非常にうまく機能します。 ZFS. 。データベース ファイルは常に一貫した状態にあるため、CouchDB が提供する整合性保証を弱めることなく、いつでもファイルのスナップショットを取得できます。
これにより、I/O オーバーヘッドがほとんどなくなります。たとえば、データベースからドキュメントを誤って削除した場合は、スナップショットを別のマシンに移動し、そこで不足しているデータを抽出できます。運用データベースに複製して戻すこともできるかもしれませんが、私はそれを試したことはありません。
ただし、データベース ファイルを移動するときは、常にまったく同じ couchdb リビジョンを使用するようにしてください。オンディスク フォーマットは、互換性のない方法で進化を続けています。
私はポールの提案を支持したいと思います。ただ cp
I/O 負荷に耐えられる場合は、データベース ファイルをライブ サーバーの下から取得します。とにかくレプリケートされたコピーを実行する場合は、マスターのパフォーマンスに影響を与えることなく、そこから安全にコピーすることもできます。
CouchDB のレプリケーションはひどいです。私は通常そうします タール それははるかに良いです。
- ソースホスト上のCouchDBサービスを停止します。
- tar.gz データ ファイル。
- 私の Ubuntu サーバーでは、これは通常 /var/lib/couchdb にあります (Couch のバージョンに基づいてサブディレクトリにある場合もあります)。これらのファイルがどこにあるかわからない場合は、CouchDb 構成ファイルでパスを見つけることができます。または、ps -A w を実行して CouchDb を開始した完全なコマンドを確認することもできます。で始まるサブディレクトリを必ず取得してください。
.
ファイルをアーカイブするとき。 - ソースホストで couchdb サービスを再起動します。
scp
tar.gz ファイルを宛先ホストにコピーし、そのホスト上の一時的な場所に解凍します。chown
宛先のデータベース ディレクトリに既に存在するファイルを所有するユーザーおよびグループにファイルを送信します。これはおそらく couchdb:couchdb です。これは重要です。なぜなら、私がこれまでこのプロセスを台無しにすることができた唯一の方法がファイルのアクセス許可を台無しにすることだからです。- 宛先ホストで CouchDB を停止します。
cp
ファイルを宛先ディレクトリにコピーします。私のホストでは、これは /var/lib/couchdb でした。- 新しいホームでのファイルのアクセス許可を再確認してください。
- 宛先ホストで CouchDB を再起動します。