MongoDBのリストアを行うには、mongorestoreを利用します。
この記事では、mongorestoreについて解説しています。
本記事の内容
- mongorestoreとは?
- mongorestoreのインストール
- mongorestoreによるリストア
それでは、上記に沿って解説していきます。
mongorestoreとは?
mongorestoreとは、バイナリファイルをロードするユーティリティです。
つまり、mongorestoreはMongoDBのリストアツールになります。
バイナリファイルは、mongodumpで作成するバックアップファイルとなります。
mongodumpについては、次の記事で解説しています。
以上、mongodumpの説明でした。
次は、mongodumpのインストールについて説明します。
mongorestoreのインストール
mongorestoreは、MongoDB Database Toolsに含まれています。
そして、MongoDB Database ToolsはMongoDB本体と一緒にインストールされます。
いわゆる、クライアントツールと言われるモノです。
そのため、MongoDBをインストール済みなら、何もする必要はありません。
MongoDBのインストールは、次の記事で解説しています。
MongoDB関連のインストール済みパッケージを確認します。
(インストール方法によって「-org」がつかないケースがあります)
$ dpkg -l | grep mongo ii mongodb-database-tools 100.3.1 amd64 mongodb-database-tools package provides tools for working with the MongoDB server: ii mongodb-org 4.4.6 amd64 MongoDB open source document-oriented database system (metapackage) ii mongodb-org-database-tools-extra 4.4.6 amd64 Extra MongoDB database tools ii mongodb-org-mongos 4.4.6 amd64 MongoDB sharded cluster query router ii mongodb-org-server 4.4.6 amd64 MongoDB database server ii mongodb-org-shell 4.4.6 amd64 MongoDB shell client ii mongodb-org-tools 4.4.6 amd64 MongoDB tools
mongodb-database-toolsとmongodb-org-toolsで名前が似ています。
しかし、それぞれ別物です。
mongorestoreは、mongodb-database-toolsに含まれています。
mongodb-database-toolsパッケージを確認します。
$ sudo apt show mongodb-database-tools Package: mongodb-database-tools Version: 100.3.1 Priority: optional Section: database Maintainer: MongoDB Connectors Team <database-tools-packaging@mongodb.com> Installed-Size: 不明 Provides: mongodb-database-tools Depends: libc6, libgssapi-krb5-2, libkrb5-3, libk5crypto3, libcomerr2, libkrb5support0, libkeyutils1 Conflicts: mongodb-database-tools Breaks: mongodb-org-tools (<= 4.3.2), mongodb-org-tools-unstable (<= 4.3.2), mongodb-enterprise-tools (<= 4.3.2), mongodb-enterprise-tools-unstable (<= 4.3.2) Replaces: mongodb-database-tools (<= 100.3.1), mongodb-org-tools (<= 4.3.2), mongodb-org-tools-unstable (<= 4.3.2), mongodb-enterprise-tools (<= 4.3.2), mongodb-enterprise-tools-unstable (<= 4.3.2) Homepage: http://www.mongodb.com Download-Size: 52.7 MB APT-Manual-Installed: no APT-Sources: https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4/multiverse amd64 Packages Description: mongodb-database-tools package provides tools for working with the MongoDB server: *bsondump - display BSON files in a human-readable format *mongoimport - Convert data from JSON, TSV or CSV and insert them into a collection *mongoexport - Write an existing collection to CSV or JSON format *mongodump/mongorestore - Dump MongoDB backups to disk in .BSON format, or restore them to a live database *mongostat - Monitor live MongoDB servers, replica sets, or sharded clusters *mongofiles - Read, write, delete, or update files in GridFS (see: http://docs.mongodb.org/manual/core/gridfs/) *mongotop - Monitor read/write activity on a mongo server
上記のパッケージ紹介では、「mongodump/mongorestore」とセットで記載されています。
これら以外にも、クライアントツールは存在しています。
では、mongorestoreのバージョンを確認しておきます。
$ mongorestore --version mongorestore version: 100.3.1 git version: 32632b931f9c41d8314b75ecc88e551b012b1e30 Go version: go1.15.8 os: linux arch: amd64 compiler: gc
確かに、mongodb-database-toolsのバージョンと同じです。
以上、mongorestoreのインストールについて説明しました。
最後に、mongorestoreによるリストアを行います。
mongorestoreによるリストア
mongorestoreの公式ページ
https://docs.mongodb.com/database-tools/mongorestore/
詳細は、上記ページを参考にしてください。
基本の使い方は、以下。
mongorestore <options> <connection-string> <directory or file to restore>
前提条件として、バックアップがdumpディレクトリ以下に保存されています。
$ tree dump/ dump/ ├── admin │ ├── system.version.bson │ └── system.version.metadata.json └── test_database ├── test_collection.bson └── test_collection.metadata.json
以下では、これさえ覚えれば何とかなるというコマンドを載せています。
全バックアップファイルのリストア
mongorestore --host="localhost" --port=27017 dump/
dump以下にあるバックアップすべてを対象にします。
ただし、それがすべて成功するかどうかはわかりません。
すでに、MongoDBに同じ名称でデータベースやコレクションがあるかもしれません。
ユニークキー制約なども関係してくるでしょう。
復元先データベースを指定したリストア
mongorestore --host="localhost" --port=27017 --db="test_database_new" dump/test_database/
test_database以下のすべてのコレクションが、復元先データベースにリストアされます。
ー復元先コレクションを指定したリストア
mongorestore --host="localhost" --port=27017 --db="test_database" --collection="test_collection_2" dump/test_database/test_collection.bson
指定したコレクションが、復元先コレクションにリストアされます。
まとめ
上記のパターンを覚えておけば、リストアで困ることはそれほどないでしょう。
困った場合は、mongorestoreの公式ページを見ましょう。
また、MongoDBのリストアは、差分に関しては適当に上手くやってくれそうです。
つまり、不必要に二重に登録はしません。
必要なカラムにユニーク制約を設けるというのは、もちろん重要です。
しかし、何も設定していなくても、自動採番される「_id」にはユニーク制約があります。
この「_id」のおかけで、リストアによる不要なデータ登録は防げます。
つまり、二重にならないデータだけを登録してくれるのです。
以上、mongorestoreによるリストアについての説明でした。