MongoDBのインストールと設定
NoSQLに分類されるMongoDBのインストールと初期設定についてまとめています。
MongoDBの概要
まずは、MongoDBとは何なのか?について概要についてです。
MongoDBとは?
MongoDBは、NoSQLに分類されるデータベースで、その中でも、ドキュメント指向データベースにカテゴラズされるオープンソースソフトウェアのデータベースです。
他のデータべースとの比較と特徴
RDBと比較して、スキーマレスでありテーブル定義が必要ないため、保守性が高いということがある反面、トランザクションはサポートしていない。という特徴があります。
また、同じNoSQLに分類されるmemcached等のKey Value Storeと比較して、memcachedがメモリ上で動作することで、高速性を特徴にRDBのサポート的な役割で使われることが多いのに対して、MongoDBは、ほぼRDBと同じように使えるため、RDBの代替えとして使われることが多い特徴があります。
その他の特徴メリット
その他の特徴メリットとして、サーバ台数を増やして水平スケールアウトすることで、負荷分散を実現することが、比較的容易に可能であるということが上げられます。
使いどころについて
上記の特徴等から、データベースのテーブルカラムを固定しにくい場合や大量のデータを高速に処理することが求められる場合、また、一定のデータ処理の要件が大きくなっていくことが予想されるシステム等で使うことに適していると考えられます。
MongoDBのインストール
それでは、インストール作業を初めていきます。
OSサポートの確認
MongoDBが、OSプラットフォームに対応しているかを確認します。今回のLinuxサーバの環境は、「Rocky Linux 8.6」となっていますが、MongoDB 6.0は、対応しているようです。
MongoDB 6.0 Community Edition supports the following 64-bit versions of Red Hat Enterprise Linux (RHEL), CentOS Linux, Oracle Linux (1), Rocky Linux, and AlmaLinux (2) on x86_64 architecture:
RHEL / CentOS / Oracle / Rocky / AlmaLinux 8
RHEL / CentOS / Oracle 7
RHEL / CentOS / Oracle 6
Install MongoDB Community Edition on Red Hat or CentOS — MongoDB Manual
リポジトリの設定とインストール
公式のドキュメントを確認します。
Create a /etc/yum.repos.d/mongodb-org-6.0.repo file so that you can install MongoDB directly using yum:
Install MongoDB Community Edition on Red Hat or CentOS — MongoDB Manual
案内のとおりにリポジトリファイルを作成します。
# vi /etc/yum.repos.d/mongodb-org-6.0.repo
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
ファイルを設定したらインストールを行います。
# dnf install mongodb-org
インストール済み:
cyrus-sasl-2.1.27-6.el8_5.x86_64 cyrus-sasl-gssapi-2.1.27-6.el8_5.x86_64 cyrus-sasl-plain-2.1.27-6.el8_5.x86_64
mongodb-database-tools-100.5.4-1.x86_64 mongodb-mongosh-1.5.4-1.el8.x86_64 mongodb-org-6.0.0-1.el8.x86_64
mongodb-org-database-6.0.0-1.el8.x86_64 mongodb-org-database-tools-extra-6.0.0-1.el8.x86_64 mongodb-org-mongos-6.0.0-1.el8.x86_64
mongodb-org-server-6.0.0-1.el8.x86_64 mongodb-org-tools-6.0.0-1.el8.x86_64 python3-pip-9.0.3-22.el8.rocky.0.noarch
python3-setuptools-39.2.0-6.el8.noarch python36-3.6.8-38.module+el8.5.0+671+195e4563.x86_64
完了しました!
MongoDBを起動します。
# systemctl start mongod
Mongoシェルを実行します。
# mongosh
Current Mongosh Log ID: 62f464e51d063614da62b657
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.5.4
Using MongoDB: 6.0.0
Using Mongosh: 1.5.4
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
------
The server generated these startup warnings when booting
2022-08-10T19:09:14.944+09:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
2022-08-10T19:09:14.944+09:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
2022-08-10T19:09:14.944+09:00: vm.max_map_count is too low
------
------
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()
------
test>
MongoDBの稼働が確認できたら、シェルを一旦終了します。
test> exit
今後、再起動時等には、自動起動するよう設定しておきます。
# systemctl enable mongod
以上でインストールは完了です。
MongoDBの設定
設定の確認と調整を行います。公式のドキュメントで、各設定の詳細を確認することができます。
The following page describes the configuration options available in MongoDB 6.0. For configuration file options for other versions of MongoDB, see the appropriate version of the MongoDB Manual.
設定ファイルの設定
設定ファイルを開いて確認します。
# vi /etc/mongod.conf
デフォルトの設定は以下のようになっています。
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# 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
# engine:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
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.
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
CacheSizeの変更
基本的には、まずは、デフォルトの設定で良いかと思いますが、ここでは、キャッシュメモリのサイズを変更します。
デフォルトのストレージエンジンは、「wiredTiger」となっていて、
storage.engine
Default: wiredTiger
デフォルトのキャッシュサイズは、次のいずれか大きい方となっています。
- (RAM-1GB)の50%
- 256MB
Starting in MongoDB 3.4, the default WiredTiger internal cache size is the larger of either:
50% of (RAM - 1 GB), or
256 MB.
また、キャッシュサイズはデフォルト値よりは、大きくしないように。となっています。
Avoid increasing the WiredTiger internal cache size above its default value.
サーバのメモリ容量を確認します。
# free -h
total used free shared buff/cache available
Mem: 125Gi 585Mi 123Gi 325Mi 1.6Gi 123Gi
Swap: 4.0Gi 0B 4.0Gi
全体からみると、少し少なめですが、とりあえずは、16GBあれば十分なので、16GBに設定を変更しておきます。
# vi /etc/mongod.conf
wiredTiger:
engineConfig:
cacheSizeGB: 16
再起動して設定を反映させます。
# systemctl restart mongod
2022年08月11日に投稿されました。