HOPES

MongoDBのインストールと設定

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.

Configuration File Options — 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

Configuration File Options — MongoDB Manual

デフォルトのキャッシュサイズは、次のいずれか大きい方となっています。

  • (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.

Configuration File Options — MongoDB Manual

また、キャッシュサイズはデフォルト値よりは、大きくしないように。となっています。

Avoid increasing the WiredTiger internal cache size above its default value.

Configuration File Options — MongoDB Manual

サーバのメモリ容量を確認します。

# 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日に投稿されました。