🥎

MongoDB AtlasからDBのdumpを取得してrestoreする

2021/05/06に公開

概要

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