MongoDB AtlasからDBのdumpを取得してrestoreする
概要
MongoDB Atlas
はクラウドでMongDBを提供しているサービスで、MongoDB Atlasで無料かつ手軽にDB環境を利用してみるの記事にある通り、制限はありますが無料から利用することができます。今回はMongoDB AtlasからDBのdumpを取得して、それをローカルのインスタンスにrestoreするやり方を書いてみます。
前提
- 私の環境ではMongoDBのバージョン4.4で動作確認しています。なお、後述していますが、MongoDBのバージョン3.6以降でないと、本記事の手順での実行はできないと思います。
- mongodb-database-toolsを事前にインストールしておきます。
- DBのデータ出力にはMongoDB のデータ出力ツール mongoexportとmongodumpの比較の記事にある、mongodumpを使用する前提とします。
対応手順
1. dumpの出力
using mongodump with mongodb atlasのstackoverflowの記事にある通り、dumpをuriを指定する形式で取得します。なお、uriを指定する形式でのdump取得はUsing mongodump with a standard Mongo URIにある通り、MongoDBのバージョン3.6以降でないとできないみたいです。
具体的な実行コマンドは、MongoDB Atlasのページから確認できます。
下記のClusterのページのCommand Line Tools
から
Binary Import and Export Tools
の項にあります。
あと、これはお好みですがMongoDB export ,import, dump, restore ダッシュボードの記事の通り、gzipで圧縮して出力することができるので、これもコマンドに付与しましょう。
最終的には以下のようなコマンドになります。
mongodump --uri mongodb+srv://xxxxxxx.mongodb.net/sample_db_from --gzip --archive=/tmp/sample_db_from.gz
2. ローカル環境へのrestore
ローカル環境へのrestoreもuri指定の形式で行うこととします。この時、取ってきたdumpからDB名を変えたいですが、どうすれば良いかということで、Mongorestore to a different databaseの記事にある通り、--nsFrom
と--nsTo
を指定することでDB名を変えてrestoreすることができます。
最終的には以下のようなコマンドになります。
mongorestore --gzip --archive=/tmp/sample_db_from.gz —uri mongodb://localhost:27017 --nsFrom "sample_db_from.*" --nsTo "sample_db_to.*"
Discussion