1

ローカルの mongodb をバックアップしようとしています。mongodump を使用するために、archlinux を使用し、mongodb-tools をインストールしました。私は試した :

mongodump --host localhost --port 27017 
mongodump --host localhost --port 27017 --db mydb

同じ応答があるたびに:

Failed: error connecting to db server: no recheable server

ただし、次を使用してデータベースに接続できます

mongo --host localhost --port 27017

あるいは単に

mongo

私のmongodbのバージョンは3.0.7です。ユーザー名/パスワードを設定していません

mongodump を適切に使用してローカル データベースをバックアップするにはどうすればよいですか?

4

2 に答える 2

1

mongodumpこれはツールのバグのようです。詳細については、このJIRAチケットを参照してください。mongodumpIP アドレスを明示的に指定すると、次のように使用できるはずです。

mongo --host 127.0.0.1 --port 27017
于 2015-11-16T10:40:56.093 に答える
0

「適切に」は、この文脈では非常に主観的な用語です。印象を与えるには:

mongodump と mongorestore は信じられないほど高速ではありません。シャード環境では、適度なサイズのデータ​​ベース場合、数日(複数形に注意してください!) かかることがあります。つまり、最悪のシナリオでは、数日分のデータが失われる可能性があります。さらに、バックアップ中にデータがかなり変更される可能性があるため、バックアップの状態に一貫性がない場合があります。この点では、mongodump を「mongodumb」と考えたほうがよいでしょう。アプリケーションは一貫性の欠如に適切に対処できなければなりません。さらに、復元に時間がかかると、費用がかかり、(場合によってはそれ以上に重要な) 評判も悪くなります。

私は個人的に mongodump を 2 つのシナリオでのみ使用します: 分割されたクラスターのメタデータ (サイズは数 MB しかありません) をバックアップする場合と、他の手段で簡単に再取得できる (比較的) 安価なデータの場合です。

MongoDB のバックアップを適切に行うには、3 つの選択肢しかありません。

  1. MongoDB Inc のクラウド バックアップ、
  2. MongoDB Ops マネージャー
  3. ファイルシステムのスナップショット

クラウドバックアップ

それにはいくつかの利点があります。ポイント イン タイム リカバリを実行して、データベースを選択した時点の一貫した状態に保つことができます。セットアップとメンテナンスが非常に簡単です。ただし、ご想像のとおり、データの揮発性と全体的なサイズに基づいた値札が付いています。これは、揮発性が低から中程度の小規模から中規模のデータには妥当です.

MongoDB Ops マネージャー

クラウド バックアップのオンプレミス バージョンであるため (この回答の範囲外の他の機能もかなりあります)、同じ利点があります。これは、中規模から大規模な大規模データベース、または不均衡に高い揮発性を持つデータベース (データ サイズと比較して "OplogGb/h" 値が高いことで示されます) に適しています。

ファイルシステムのスナップショット

うーん、なんか安っぽい。スナップショットを作成し、マウントし、バックアップ スペースにコピーし、スナップショットをアンマウントして破棄し、必要に応じてコピーしたデータを圧縮すれば完了です。ただし、いくつかの注意事項があります。

同期

一貫性のあるデータのバックアップを取得するには、分割されたクラスターでスナップショットを同期する必要があります。特に、シャードされたクラスターのメタデータもバックアップと一致している必要があるため、途中で高速な回復が必要な場合. それは少しトリッキーになる可能性があります。データの一貫性を確保するには、すべてを切断しmongos、バランサーを停止し、データを各ノードのファイルに fsync し、スナップショットを作成し、バランサーを再度開始して、すべてを再起動する必要がありますmongos。これを適切に同期するには、バックアップを作成するたびに数分間のメンテナンス ウィンドウが必要です。

単純なレプリカ セットの場合、同期は不要であり、バックアップは問題なく機能することに注意してください。

オーバープロビジョニング

ファイルシステムのスナップショットは、いわゆる「コピー オン ライト」(CoW) で機能します。少し単純化: スナップショットを作成し、ファイルが変更されると、代わりにコピーされ、新しくコピーされたファイルに変更が適用されます。ただし、スナップショットは古いファイルを指しています。スナップショットを作成できるようにするためには、CoW に従って、スナップショットを処理しながら MongoDB が機能できるように、追加のディスク領域が必要であることは明らかです。すべてのデータが変更されるという最悪のシナリオを想定してみましょう。MongoDB のパーティションをデータ サイズの少なくとも 100% オーバープロビジョニングする必要があります。つまり、重要なディスク使用率は 50 になります。 % から、スケールアップに必要な時間のしきい値を差し引いたもの。もちろん、これは少し誇張されていますが、イメージはわかります。

結論

私見、適切なバックアップは次の方法で行う必要があります。

  • 安価なデータのための mongorestore と一貫性への懸念はほとんどありません
  • レプリカ セットのファイル システム スナップショット
  • 揮発性が低から中程度の小規模から中規模のシャード データベース向けのクラウド バックアップ
  • Ops Manager バックアップ 大規模なデータベースまたは小規模から中規模のデータベース向けで、非常に揮発性が高い

前述のとおり、「適切に」というのは、バックアップに関して非常に主観的な用語です。;)

于 2015-11-16T11:57:59.107 に答える