はじめに
MongoDB は NoSQL タイプ(ドキュメントベース)のデータベースシステムです。
SQL タイプ(テーブルベース)のデータベースとの大きな違いは、格納する項目を事前に定義する必要がないため柔軟な拡張ができる点と、複雑な階層をもったデータでもインデックスを作成できるためデータ構造に悩む事が少なくなる点でしょうか。もっとも、無計画に設計するとレスポンスが遅くなったり、消費するリソースが増えたりするでしょう。
今回、MongoDB3.0 を yum コマンドを使って CentOS7 にインストールする手順を紹介します。
インストール手順
MongoDB リポジトリインストール
MongoDB は CentOS7 標準リポジトリに含まれていません。このため、MongoDB の開発元が公開しているリポジトリをインストールしておきます。
$ sudo curl http://repo.mongodb.org/yum/redhat/mongodb-org.repo \
> -o /etc/yum.repos.d/mongodb.repo
MongoDB リポジトリが有効になっているか、下記コマンドを実行して確認します。
$ yum list --enablerepo=mongodb-org | grep mongo
EPEL リポジトリがインストール済みであれば、別の古いバージョンが mongodb-server として一緒に並ぶかもしれません。
mongodb-org パッケージと mongodb-org-server パッケージを確認できたら、下記コマンドでインストールします。
$ sudo yum install --enablerepo=mongodb-org mongodb-org mongodb-org-server
MongDB サーバー起動
MongoDB サーバーのインストールが完了したら、MongoDB サーバーを起動しましょう。
$ sudo systemctl start mongod
(CentOS6, AmazonLinux などでは下記コマンド)
$ sudo service mongod start
運用Tips
サービス開始設定
OS 起動時に MongoDB も自動的に起動するようにします。
$ sudo systemctl enable mongod
CentOS7 では従来の chkconfig コマンドによるサービス登録ではなく、systemctl コマンドにより登録します。が、今回インストールした MongoDB はネイティブのサービスではないため、従来の chkconfig に自動的に切り替えてサービス登録されるようです。
(「mongod.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig mongod on」のメッセージが表示されます。)
ダンプ
MongoDB からデータをバイナリファイルにエクスポートします。データベース(SQLサーバーでいうところのデータベースに該当)およびコレクション(SQLサーバーでいうところのテーブルに該当)を指定して一部のデータのみを出力することもできます。
ダンプ結果はディレクトリ階層として表現されます。下記の例では 20150925-102030.dump はディレクトリで、この中にディレクトリ mydb があり、さらにその中に ディレクトリ mycollection が作成されます。
(すべてのコレクションをダンプする場合)
$ mongodump --out 20150925-102030.dump
(一部のコレクションのみダンプする場合)
$ mongodump --db mydb --collection mycollection --out 20150925-102030.dump
$ tar fcz 20150925-102030.dump.tar.gz 20150925-102030.dump
$ rm -rf 20150925-102030.dump
リストア
ダンプで取得したバイナリファイルからデータを MongoDB にインポートしてデータを復元します。一部のデータベースまたはコレクションのみ復元することもできます。
なお、–drop オプションをつけることで、リストア対象のコレクションは既存データを削除してからリストアするようになります。逆に、既存のデータを残したままリストアデータを追加する場合は –drop オプションをつけないでください。
また、リストアデータに含まれないコレクションのデータは –drop オプションを付けても削除されません。
$ tar fxz 20150925-102030.dump.tar.gz
(すべてのコレクションをリストアする場合 既存データは削除)
$ mongorestore --drop 20150925-102030.dump
(一部のコレクションをリストアする場合 既存データに追加)
$ mongorestore --db mydb --collection mycollection 20150925-102030.dump
$ rm -rf 20150925-102030.dump