MongoDB サーバーを CentOS7 にインストールする

はじめに

 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

 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

ダンプ

 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

コメントを残す

メールアドレスが公開されることはありません。