ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

MongoDB, CentOS7にインストールする。リポジトリ作成からのyum実行。

mongoDB logo
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。※ mongoDBのロゴはmongodb.comの商標です。当サイトがmongoDB公認を示すものではありません。

何を今さらですがMongoDBを使うことにしました。というか、無理やり使おうとしないとこれからも機会がないんじゃないかと思って。

MongoDBは『NoSQL』の盛り上がりと同時に注目されたんですが、NoSQLの落ち着きとともに落ち着いてきたDB。

NoSQLはMongoDBじゃないといけないことはありません。

MongoDBはNoSQLデータベースです。『NoSQL』を最初に聞いたときは、『どうやって検索するの?』でしたが、ざっくり言えば、リレーショナルデータベース(RDB)とはちがう構成のデータベースのこと。

『レスポンスが速い』『テーブル結合しない』『機械学習(深層学習)などのAIと親和性が高い』などなど、興味をそそる話は聞いていましたが、あれから3年以上一度もさわることなく...

『いい加減ヤバいでしょ?』って思っちゃったんで、いまさらながらMongoDBデビューです。

MongoDBを使ってなかった理由は、MySQLでJSON型が導入されそれが発展してNoSQLに対応しているから。

(MariaDBでもNoSQLチックなものを導入している。)

(MongoDBと同じようなことができる。)

MongoDBはドキュメント指向データベースに分類。

データは自動発番のidとJSON型データのみを保存してjsonのキーで検索できる。

jsonの構成は自由なのでカラムの定義はない。(スキーマがない。)

RDBでいうスキーマがちがうレコードをコレクションにInsertできるのが特長。

(コレクションはRDBのテーブルにあたる。)

yumリポジトリ作成

早速、インストールを始めます。公式ドキュメントのとおりに進めます。

/etc/yum.repos.d/mongodb-org-4.2.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

yumのリポジトリファイルを作ります。最新版をインストールするにはこの方法がベスト。

(安定版バージョン4.2。2020年6月17日現在。)

ちなみに、rpmファイルを直接ダウンロードできます。個人的にはyumのほうがいいかな。 rpmを自分で取ってくるのは昔の方法って感じがするので。

バージョン番号について

MongoDBのバージョン番号は奇数が開発版、偶数番号が安定版です。

4.0安定版
4.1開発版
4.2安定版
4.3開発版
4.4次期バージョン。

奇数番号をインストールしないように気をつけましょう。こういう番号の付け方は珍しいので。

インストール実行

一番かんたんなインストールコマンドはこれです。

sudo yum install -y mongodb-org
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * epel: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mongodb-org.x86_64 0:4.2.8-1.el7 を インストール
--> 依存性の処理をしています: mongodb-org-mongos = 4.2.8 のパッケージ: mongodb-org-4.2.8-1.el7.x86_64
--> 依存性の処理をしています: mongodb-org-server = 4.2.8 のパッケージ: mongodb-org-4.2.8-1.el7.x86_64
--> 依存性の処理をしています: mongodb-org-shell = 4.2.8 のパッケージ: mongodb-org-4.2.8-1.el7.x86_64
--> 依存性の処理をしています: mongodb-org-tools = 4.2.8 のパッケージ: mongodb-org-4.2.8-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ mongodb-org-mongos.x86_64 0:4.2.8-1.el7 を インストール
---> パッケージ mongodb-org-server.x86_64 0:4.2.8-1.el7 を インストール
---> パッケージ mongodb-org-shell.x86_64 0:4.2.8-1.el7 を インストール
---> パッケージ mongodb-org-tools.x86_64 0:4.2.8-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=============================================================================================================================
 Package                            アーキテクチャー       バージョン                  リポジトリー                     容量
=============================================================================================================================
インストール中:
 mongodb-org                        x86_64                 4.2.8-1.el7                 mongodb-org-4.2                 5.9 k
依存性関連でのインストールをします:
 mongodb-org-mongos                 x86_64                 4.2.8-1.el7                 mongodb-org-4.2                  15 M
 mongodb-org-server                 x86_64                 4.2.8-1.el7                 mongodb-org-4.2                  25 M
 mongodb-org-shell                  x86_64                 4.2.8-1.el7                 mongodb-org-4.2                  17 M
 mongodb-org-tools                  x86_64                 4.2.8-1.el7                 mongodb-org-4.2                  62 M

トランザクションの要約
=============================================================================================================================
インストール  1 パッケージ (+4 個の依存関係のパッケージ)

総ダウンロード容量: 119 M
インストール容量: 283 M
Downloading packages:
警告: /var/cache/yum/x86_64/7/mongodb-org-4.2/packages/mongodb-org-4.2.8-1.el7.x86_64.rpm: ヘッダー V3 RSA/SHA1 Signature、鍵 ID 058f8b6b: NOKEY
mongodb-org-4.2.8-1.el7.x86_64.rpm の公開鍵がインストールされていません
(1/5): mongodb-org-4.2.8-1.el7.x86_64.rpm                                                             | 5.9 kB  00:00:01
(2/5): mongodb-org-mongos-4.2.8-1.el7.x86_64.rpm                                                      |  15 MB  00:04:14
(3/5): mongodb-org-shell-4.2.8-1.el7.x86_64.rpm                                                       |  17 MB  00:04:17
(4/5): mongodb-org-server-4.2.8-1.el7.x86_64.rpm                                                      |  25 MB  00:09:31
(5/5): mongodb-org-tools-4.2.8-1.el7.x86_64.rpm                                                       |  62 MB  00:09:32
-----------------------------------------------------------------------------------------------------------------------------
合計                                                                                         112 kB/s | 119 MB  00:18:04
https://www.mongodb.org/static/pgp/server-4.2.asc から鍵を取得中です。
Importing GPG key 0x058F8B6B:
 Userid     : "MongoDB 4.2 Release Signing Key <packaging@mongodb.com>"
 Fingerprint: e162 f504 a20c df15 827f 718d 4b7c 549a 058f 8b6b
 From       : https://www.mongodb.org/static/pgp/server-4.2.asc
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : mongodb-org-mongos-4.2.8-1.el7.x86_64                                                        1/5
  インストール中          : mongodb-org-tools-4.2.8-1.el7.x86_64                                                         2/5
  インストール中          : mongodb-org-shell-4.2.8-1.el7.x86_64                                                         3/5
  インストール中          : mongodb-org-server-4.2.8-1.el7.x86_64                                                        4/5
Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /usr/lib/systemd/system/mongod.service.
  インストール中          : mongodb-org-4.2.8-1.el7.x86_64                                                               5/5
  検証中                  : mongodb-org-server-4.2.8-1.el7.x86_64                                                        1/5
  検証中                  : mongodb-org-4.2.8-1.el7.x86_64                                                               2/5
  検証中                  : mongodb-org-shell-4.2.8-1.el7.x86_64                                                         3/5
  検証中                  : mongodb-org-tools-4.2.8-1.el7.x86_64                                                         4/5
  検証中                  : mongodb-org-mongos-4.2.8-1.el7.x86_64                                                        5/5

インストール:
  mongodb-org.x86_64 0:4.2.8-1.el7

依存性関連をインストールしました:
  mongodb-org-mongos.x86_64 0:4.2.8-1.el7  mongodb-org-server.x86_64 0:4.2.8-1.el7  mongodb-org-shell.x86_64 0:4.2.8-1.el7
  mongodb-org-tools.x86_64 0:4.2.8-1.el7

完了しました!

それぞれのソフトウェアに個別のバージョンを指定することもできますが、それは省略します。

MongoDBのシステム構成

MongoDBのシステムを構成するファイル・ディレクトリは3つです。

データディレクトリ/var/lib/mongo
ログディレクトリ/var/log/mongodb
設定ファイル/etc/mongod.conf
グループ:ユーザー
mongod:mongod
ディレクトリ・ファイルの所有者

yumでインストールすればデータディレクトリ・ログディレクトリまで作ってくれます。

rpmを自分でダウンロードしたときはこれらを手作業で作らないといけません。

(だからこのイントール方法は推奨しない。)

ちなみに、設定ファイルでデータディレクトリ・ログディレクトリは変更できます。

(接続ポート番号なども)

/etc/mongod.conf
# mongod.conf

# (省略)

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true

# (省略)

net:
  port: 27017
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

# (省略)

ほかにもデータディレクトリにいろいろなファイル・ディレクトリが作られる。

MongoDBの起動・停止など

システムの起動などはsystemdのいつものやつです。

起動
sudo systemctl start mongod
起動確認
sudo systemctl status mongod
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: active (running) since 水 2020-06-17 13:14:20 JST; 6s ago
     Docs: https://docs.mongodb.org/manual
  Process: 10325 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 10322 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 10320 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 10318 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
 Main PID: 10328 (mongod)
   CGroup: /system.slice/mongod.service
           mq10328 /usr/bin/mongod -f /etc/mongod.conf

 6月 17 13:14:19 *** systemd[1]: Starting MongoDB Database Server...
 6月 17 13:14:19 *** mongod[10325]: about to fork child process, waiting until server is ready for connections.
 6月 17 13:14:19 *** mongod[10325]: forked process: 10328
 6月 17 13:14:20 *** mongod[10325]: child process started successfully, parent exiting
 6月 17 13:14:20 *** systemd[1]: Started MongoDB Database Server.

OS起動時に自動起動するようにしておきましょう。

sudo systemctl enable mongod

シェル起動

MySQLのmysqlコマンドにあたるのがmongoコマンドです。

mongo
MongoDB shell version v4.2.8
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("7d713e73-9a0f-4059-aee1-d805eacb31b5") }
MongoDB server version: 4.2.8
Server has startup warnings:
2020-06-17T13:14:20.898+0900 I  CONTROL  [initandlisten]
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten]
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten]
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten]
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-06-17T13:14:20.899+0900 I  CONTROL  [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

>

'>' が出て各操作コマンドが実行できればOKです。ここでは、初期状態のDB一覧を見てみましょう。

DB一覧表示
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
>

3つのデータベースがあるようですね? さらに、どのようなコレクションがあるのか見てみましょう。

コレクション表示
> use admin
switched to db admin
> show collections
system.version
> use config
switched to db config
> show collections
system.sessions
> use local
switched to db local
> show collections
startup_log
>

use ***はmysqlコマンドを使っている人は分かるでしょう。操作するデータベースの変更です。

ただし、MongoDBのちがうところは、存在しないデータベースでuseした場合、データベースを新規作成します。

MySQLmongoDB
カレントDBの変更。カレントDBの変更。
データベース作成。
useコマンド

今回はここまで。そのあとはインストール後の最初の設定、データベース作成、コレクション作成などなど行います。

前の投稿
MariaDB, インストール直後にやるべき作業。初期設定は常識です。
MongoDB, インストール直後にやっておくこと。最低限のセキュリティ設定。
次の投稿
コメントを残す

*