web-dev-qa-db-ja.com

CouchDBのバックアップとデータベースのクローン

CMS風のアプリケーションのCouchdDBを調べています。本番データベースのバックアップに関する一般的なパターン、ベストプラクティス、ワークフローアドバイスは何ですか?

開発とテストで使用するためにデータベースを複製するプロセスに特に興味があります。

実行中のインスタンスの下からディスク上のファイルをコピーするだけで十分ですか? 2つのライブ実行インスタンス間でデータベースデータのクローンを作成できますか?

使用するテクニックのアドバイスと説明は大歓迎です。

36
Kyle Burton

CouchDBはレプリケーションをサポートしているため、CouchDBの別のインスタンスにレプリケートし、そこからバックアップするだけで、変更を書き込む場所に影響を与えません。

http://wiki.Apache.org/couchdb/FrequentlyAskedQuestions#how_replication

文字通りPOSTリクエストをCouchDBインスタンスに送信して、どこに複製するかを伝え、それが機能します(tm)

編集:I/Oヒットを受け入れることができる限り、実行中のデータベースの下からファイルをcpすることができます。

31
Marc Gear

もう1つ注意すべき点は、ライブデータベースの下からファイルをコピーできることです。大規模なデータベースが存在する可能性がある場合、テスト/本番マシンから別のマシンにOOBをコピーするだけです。

マシンの書き込み負荷によっては、コピー後にレプリケーションをトリガーして、ファイルのコピー時に進行中だった書き込みを収集することをお勧めします。ただし、いくつかのレコードの複製は、データベース全体の複製よりも高速です。

参照してください: http://wiki.Apache.org/couchdb/FilesystemBackups

37
Paul J. Davis

Paulの提案を2番目にしたいと思います。I/ O負荷のヒットを取得できる場合は、ライブサーバーの下からデータベースファイルをcpだけです。とにかく複製されたコピーを実行する場合、マスターのパフォーマンスに影響を与えることなく、そこからも安全にコピーできます。

7
Jan Lehnardt

CouchDBは [〜#〜] zfs [〜#〜] のような最新のファイルシステムによって提供されるファイルシステムスナップショットでも非常にうまく機能します。データベースファイルは常に一貫した状態にあるため、CouchDBによって提供される整合性の保証を弱めることなく、いつでもファイルのスナップショットを取得できます。

これにより、I/Oオーバーヘッドはほとんど発生しません。あなたが持っている場合など誤ってデータベースからドキュメントを削除した場合は、スナップショットを別のマシンに移動して、そこに不足しているデータを抽出できます。本番データベースに複製して戻すこともできますが、私はそれを試したことはありません。

ただし、データベースファイルを移動するときは、常に同じcouchdbリビジョンを使用するようにしてください。ディスク上のフォーマットは、互換性のない方法で進化しています。

7
max

CouchDBの複製は恐ろしいものです。私は通常 tar を実行します。

  1. ソースホストでCouchDBサービスを停止します
  2. tar.gzデータファイル。
  3. 私のUbuntuサーバーでは、これは通常/ var/lib/couchdbにあります(Couchバージョンに基づくサブディレクトリにある場合もあります)。これらのファイルの場所がわからない場合は、CouchDb構成ファイルでパスを見つけるか、またはしばしばps -A wを実行してCouchDbを開始した完全なコマンドを確認します。ファイルをアーカイブするときは、.で始まるサブディレクトリを取得してください。
  4. ソースホストでcouchdbサービスを再起動します。
  5. scp tar.gzファイルを宛先ホストにコピーし、そこで一時的な場所に解凍します。
  6. chown宛先のデータベースディレクトリにすでにあるファイルを所有するユーザーおよびグループにファイルを送信します。これはおそらくcouchdb:couchdbです。これまで重要なのは、ファイルのアクセス許可を台無しにすることが、このプロセスを台無しにしてしまった唯一の方法だからです。
  7. 宛先ホストでCouchDBを停止します。
  8. cpファイルを宛先ディレクトリーに入れます。再び私のホストでは、これは/ var/lib/couchdbです。
  9. 彼らの新しい家でファイルのアクセス許可を再確認してください。
  10. 宛先ホストでCouchDBを再起動します。
1
coffeequant