38142


MongoDBのデータベースは`mongodump`を使ってバックアップできますが、conf設定ファイルに書かれている  
`dbpath=/usr/local/var/mongodb`  
は  
`cp /usr/local/var/mongodb /var/backup/mongodb`  
でコピペすればバックアップとなりますか？

DBとコレクションをバックアップする際にcpではできないので、これも違うような気がするのですが、ユーザーやロールの丸ごとdump方法は公式サイトに記されていませんでした。

一度dbpathを削除してしまい、ユーザーやロール設定をやり直す羽目になったことがあるので、今後のためになんとかしたいと思っています。

データベースごとにアクセス制御をしているので、こちらの方法はできませんでした。(これもユーザーなどをバックアップする方法ではないので皆無です。)  
<https://garafu.blogspot.jp/2017/01/mongodb-backup-restore.html#dump>

> アクセス制御がない場合 MongoDB サーバーにおいて以下のコマンドを実行すると BSON ファイルで指定した場所にバックアップが取得できます。
> アクセス制御がなければすべてのデータベースを対象にバックアップ & リストアができます。
>
> `mongodump -o <PATH>`

（公式サイト）  
Back Up and Restore with MongoDB Tools  
<https://docs.mongodb.com/manual/tutorial/backup-and-restore-tools/>


CC BY-SA 3.0
2017-09-22T01:06:40.267
38098
2017-09-23T10:14:07.350
2017-09-22T01:19:08.580
7973
7973
question
mongodb
MongoDBのdbpathのバックアップ方法


dbpathディレクトリーを丸ごとバックアップする方法について：

> conf設定ファイルに書かれている  
>  dbpath=/usr/local/var/mongodb  
>  は  
>  cp /usr/local/var/mongodb /var/backup/mongodb  
>  でコピペすればバックアップとなりますか？

はい。もちろんmonogodプロセスを止まって`cp
**-r**`を使って下さい。（特：`cp`じゃなくてファイルシステムスナップショットが使えるならプロセス停止しなくても大丈夫です。<https://docs.mongodb.com/manual/tutorial/backup-
with-filesystem-snapshots/>。）

cpでもファイルシステムスナップショットでもユーザーやロールは保存と回復できます。なぜならそれはコレクションデータのです。

mongodumpでもデータとユーザやロール一緒に保存できる。ユーザのsystem.usersコレクションはどこですか？adminデータベースであればそれと求めるdbを連続mongodumpして。

[code]

    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
    
[/code]

回復するとき一度authコンフィグレーションオプションを無効にしてください。mongorestoreが完了したらもう一度confファイルでauthを有効して再起動する。


CC BY-SA 3.0
2017-09-23T10:14:07.350
38142
2017-09-23T10:14:07.350
113
38098
answer