質問: MongoDBのデータベースは`mongodump`を使ってバックアップできますが、conf設定ファイルに書かれている `dbpath=/usr/local/var/mongodb` は `cp /usr/local/var/mongodb /var/backup/mongodb` でコピペすればバックアップとなりますか? DBとコレクションをバックアップする際にcpではできないので、これも違うような気がするのですが、ユーザーやロールの丸ごとdump方法は公式サイトに記されていませんでした。 一度dbpathを削除してしまい、ユーザーやロール設定をやり直す羽目になったことがあるので、今後のためになんとかしたいと思っています。 データベースごとにアクセス制御をしているので、こちらの方法はできませんでした。(これもユーザーなどをバックアップする方法ではないので皆無です。) > > アクセス制御がない場合 MongoDB サーバーにおいて以下のコマンドを実行すると BSON ファイルで指定した場所にバックアップが取得できます。 アクセス制御がなければすべてのデータベースを対象にバックアップ & リストアができます。 > > > `mongodump -o ` > > > (公式サイト) Back Up and Restore with MongoDB Tools
回答: dbpathディレクトリーを丸ごとバックアップする方法について: > > conf設定ファイルに書かれている > > dbpath=/usr/local/var/mongodb > > は > > cp /usr/local/var/mongodb /var/backup/mongodb > > でコピペすればバックアップとなりますか? > > > はい。もちろんmonogodプロセスを止まって`cp **-r**`を使って下さい。(特:`cp`じゃなくてファイルシステムスナップショットが使えるならプロセス停止しなくても大丈夫です。。) cpでもファイルシステムスナップショットでもユーザーやロールは保存と回復できます。なぜならそれはコレクションデータのです。 mongodumpでもデータとユーザやロール一緒に保存できる。ユーザのsystem.usersコレクションはどこですか?adminデータベースであればそれと求めるdbを連続mongodumpして。 ``` rm -rf dump_dir #delete old backup if exists mongodump -u xxx -p yyy --authenticationDatabase admin -d admin --out dump_dir mongodump -u xxx -p yyy --authenticationDatabase admin -d foo --out dump_dir mongodump -u xxx -p yyy --authenticationDatabase admin -d bar --out dump_dir [akira@akira-arch-x220 tmp]$ find dump_dir -name '*.bson' dump_dir/admin/system.version.bson dump_dir/admin/system.users.bson dump_dir/foo/foo_collection_1.bson dump_dir/foo/foo_collection_2.bson dump_dir/bar/bar_collection_1.bson ``` 回復するとき一度authコンフィグレーションオプションを無効にしてください。mongorestoreが完了したらもう一度confファイルでauthを有効して再起動する。