204

これまで、MongoDB データ ディレクトリを指定したことはなく、30 GB のプライマリ パーティションが 1 つしかありませんでした。

空き容量がなくなったので、新しいハードディスクを追加しました。/var/lib/mongodb/既存のインストールに影響を与えずにすべてが新しいディスクから実行されるように、データ (これはどうやら にあります) を転送し、MongoDB を構成するにはどうすればよいですか?

4

10 に答える 10

239

簡単に言えば、MongoDB の--dbpathパラメーターを使用すると、MongoDB がデータを読み書きするディレクトリを制御できるようになります。

mongod --dbpath /usr/local/mongodb-data

mongodb を起動し、ファイルを/usr/local/mongodb-data.

ディストリビューションと MongoDB のインストールに応じて、mongod.confこれを自動的に行うようにファイルを構成することもできます。

# Store data in /usr/local/var/mongodb instead of the default /data/db
dbpath = /usr/local/var/mongodb

公式の 10gen Linux パッケージ ( Ubuntu/DebianまたはCentOS/Fedora ) には基本的な構成ファイルが同梱されて/etc/mongodb.confおり、MongoDB サービスは起動時にこれを読み取ります。ここで変更を加えることができます。

于 2011-05-11T08:25:00.143 に答える
118

2 分間のダウンタイムで解決しました :)
フォルダを移動し、シンボリック リンクを追加して、権限を調整するだけです。

sudo service mongod stop
sudo mv mongodb /new/disk/mongodb/
sudo ln -s /new/disk/mongodb/ /var/lib/mongodb
sudo chown mongodb:mongodb /new/disk/mongodb/
sudo service mongod start

# test if mongodb user can access new location:
sudo -u mongodb -s cd /new/disk/mongodb/
# resolve other permissions issues if necessary
sudo usermod -a -G <newdisk_grp> mongodb
于 2014-07-11T17:05:25.793 に答える
29

持っていない場合は、MongoDB フォルダーに mongod.cfg というファイルを作成します。私の場合: C:\Users\ivanbtrujillo\MongoDB

次に、メモ帳で mongod.cfg を編集し、次の行を追加します (カスタム dbpath):

dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db

このファイルでは、ログパスも指定する必要があります。私のmongod.cfgファイルは次のとおりです。

logpath=C:\Users\ivanbtrujillo\MongoDB\log\mongo.log
dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db

Windows サービスとして mongoDB を使用する場合は、このキーを変更し、mongod.cfg ファイルを指定する必要があります。

mongodb を Windows サービスとしてインストールするには、次のコマンドを実行します。

**"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" –install**

regedit.exe を開き、次のルートに移動します。

HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\services\MongoDB

MongoDB サービスが機能しません。ImagePath キーを編集し、その内容を削除して、以下を配置する必要があります。

**"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" 
--logpath="C:\Users\ivanbtrujillo\MongoDB\log\mongo.log" –service**

設定ファイルとそのログパスを mongo に示します。

その後、mongodb サービスを開始すると、機能します。

Windows に mongoDB をインストールするための完全なチュートリアルは次のとおりです

それが役に立てば幸い、

于 2014-08-14T08:25:20.737 に答える
24

の内容を にコピー/var/lib/mongodb/data/dbます。探しているファイルの名前 は、your_db_name.nsおよびyour_dbname.nn0 から始まる数字です。 の下にそのようなファイルが表示されない場合は/var/lib/mongodb、ファイル システムで検索してください。

コピーしたら--dbpath=/data/db、コマンドでMongoDBを起動するときに使用しmongodます。

于 2011-05-11T08:24:15.770 に答える
21

これが私がやったことです、それが他の誰かに役立つことを願っています:

手順:

  1. mongodb を使用しているサービスを停止します
  2. mongodを停止します-これを行う私の方法はrcファイルを使用することでした/etc/rc.d/rc.mongod stop。systemdなどの他のものを使用する場合は、ドキュメントを確認してください。
  3. 新しいハードディスクに新しいディレクトリを作成します-mkdir /mnt/database
  4. mongodb がそのディレクトリから読み書きする権限を持っていることを確認してください(通常はchown mongodb:mongodb -R /mnt/database/mongodb) - @DanailGabenski に感謝します。
  5. mongodb のデータ フォルダーを新しい場所にコピーしますcp -R /var/lib/mongodb/ /mnt/database/
  6. 古いデータベース フォルダを削除します-rm -rf /var/lib/mongodb/
  7. 新しいデータベース フォルダへのシンボリック リンクを作成します-ln -s /mnt/database/mongodb /var/lib/mongodb
  8. モンゴッドを起動-/etc/rc.d/rc.mongod start
  9. mongodのログを確認mongoし、健全性チェックを行います (データベースに接続して、すべてが正常かどうかを確認してください)。
  10. ポイント 1 で停止したサービスを開始します

これを行うときに注意する必要があると言う必要はありませんが、rm -rfこれが最善の方法だと思います。

データベースのコンテンツを変更する書き込み/読み取りサービスが存在する可能性があるため、mongod の実行中にデータベース dir をコピーしようとしないでください。

于 2014-12-21T11:31:38.737 に答える
10

Ubuntu 12.04 でインストールした場合apt-getは、忘れずにchown -R mongodb:nogroup /path/to/new/directory. また、 で設定を変更します/etc/mongodb.conf

念のため、mongodb-10genパッケージは upstart 経由で開始されるようになったため、構成スクリプトは次の場所にあります。/etc/init/mongodb.conf

私はちょうどこれを経験しました、グーグル社員がそれを役に立つと思うことを願っています:)

于 2013-05-21T01:26:18.207 に答える
0

debian/ubuntu では、/etc/init.d/mongodb スクリプトを編集する必要があります。実際、このファイルは /etc/mongodb.conf から設定を取得する必要がありますが、デフォルト ディレクトリを取得していないようです (おそらくバグ)。

これはちょっとしたハックですが、これらをスクリプトに追加すると、正しく起動しました。

追加:

DBDIR=/database/mongodb

変化する:

DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --config $CONF run"}

に:

DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --dbpath $DBDIR --config $CONF run"}
于 2014-07-30T05:09:01.270 に答える
0

シンボリックリンクが失敗したように見える特殊なケースを見つけました:

mongodb の標準エンタープライズ インストールを行いましたが、データベース フォルダーに XFS ファイル システムを使用し、ログ フォルダーに 3 番目のファイル システムを使用したかったため、/var/lib/mongodb をシンボリック リンクに変更しました。

$sudo systemctl start mongod (mongodb.log への書き込み権限がないというメッセージが表示されて失敗します)。しかし、同じ構成ファイルで開始した場合は成功しました。

.. 外部ドライブ (ziggy) の所有者として、 $mongod --config /etc/mongodb.conf --fork を起動できました

最終的に、シンボリックリンクが別のファイルシステムを指しており、mongodb(ユーザー)には、シンボリックリンクが参照するフォルダーを参照する権限がないことがわかりました。シンボリックリンクとシンボリックリンクが参照するフォルダーの両方がmongodユーザーに広範な権限を持っていたので、意味がありませんでしたか?

/var/log/mongodb は (std ent インストールから) シンボリック リンクに変更され、以前に確認したことがあります。

$ ll /var/log/mongodb lrwxrwxrwx 1 mongodb mongodb 38 Oct 28 21:58 /var/log/mongodb -> /media/ziggy/XFS_DB/mongodb/log/

$ ll -d /media/ziggy/Ext4DataBase/mongodb/log drwxrwxrwx 2 mongodb mongodb 4096 11 月 1 12:05 /media/ashley/XFS_DB/mongodb/log/

..しかし、それは意味がないように見えました..もちろん、ユーザーmongodbはリンク、フォルダー、およびファイルmongodb.logへのrwxアクセスを持っていました..しかし、メディアのBASEフォルダーが見つからなかったため、シンボリックリンクを介してそれを見つけることができませんでしたmongodb によって検索されます。

だから..私は最終的にこれをしました: $ ll /media/ziggy/ . . drwx------ 5 ziggy ziggy 4096 10 月 28 日 21:49 XFS_DB/

問題のあるx権限の欠落が見つかりました..

$chmod a+x /media/ziggy/XFS_DB は問題を解決しました

後から考えるとばかげているように見えますが、検索しても何も役に立ちませんでした。

于 2020-11-01T17:57:43.943 に答える