MongoDBはオープンソースであり、最も人気のあるドキュメント指向データベース(NoSQL)の1つです。 MongoDBでは、データは、リレーショナルデータベースのテーブルや行とは異なり、動的スキーマを使用してJSONのようなドキュメントに保存されます。
MongoDBは、スケーラビリティと開発者の敏捷性の両方を念頭に置いて設計されています。 Windows、Linux、OS X、Solaris、FreeBSDで利用できます。
この投稿では、CentOS 8 /RHEL8にMongoDBをインストールする方法を説明します。
MongoDBエディション
MongoDB Incは、エンドユーザー向けにMongoDBの2つのサーバーエディションをリリースしています。
-
MongoDB Enterprise Server
-
MongoDBコミュニティサーバー
ここでは、MongoDBコミュニティエディションをインストールする方法を説明します。 MongoDBコミュニティサーバーは、サーバー側パブリックライセンス(SSPL)の下でリリースされます。
MongoDBリポジトリを追加
MongoDB Incは、MongoDBデータベースをダウンロードしてインストールするための専用ソフトウェアリポジトリを提供しています。
システムにMongoDBリポジトリを追加します。
MongoDB 4.4
cat << EOF > /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8Server/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
MongoDB 4.2
cat << EOF > /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8Server/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
EOF
MongoDBをインストールする
MongoDBリポジトリを追加したら、dnfコマンドを使用してMongoDBをインストールします。
dnf install -y mongodb-org
mongob-org(以下のコンポーネントをインストールするメタパッケージ) | |
---|---|
mongodb-org-server | サーバーパッケージ |
mongodb-org-mongos | 共有デーモン |
mongodb-org-shell | コマンドラインインターフェイス |
mongodb-org-tools | MongoDBツール(インポート、エクスポート、復元、ダンプ、その他のツール) |
SELinux
SELinuxを有効にして(強制モードで)MongoDBを実行するには、指示に従ってMongoDBのSELinuxポリシーをカスタマイズします。システムでSELinuxを無効にしている場合は、以下の手順をスキップしてください。
dnfコマンドを使用してcheckpolicyパッケージをインストールします。
dnf install -y checkpolicy
MongoDBプロセスがcgroupにアクセスして、システムで使用可能なメモリを判別できるようにするためのSELinuxポリシーファイルを作成します。
cat > mongodb_cgroup_memory.te <<EOF
module mongodb_cgroup_memory 1.0;
require {
type cgroup_t;
type mongod_t;
class dir search;
class file { getattr open read };
}
#============= mongod_t ==============
allow mongod_t cgroup_t:dir search;
allow mongod_t cgroup_t:file { getattr open read };
EOF
以下のコマンドを使用して、カスタムSELinuxポリシーモジュールをコンパイルしてロードします。
checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
semodule -i mongodb_cgroup_memory.pp
Ulimit設定
デフォルトでは、ほとんどのシステムには、特定のユーザー(アプリケーションfid)が持つことができるプロセス、開いているファイル、メモリなどの数に制限が設定されており、これらの制限によりMongoDBの操作で問題が発生する可能性があります。
MongoDBは、systemdユニットファイルで推奨される制限設定を提供するようになりました。したがって、制限を手動で設定する必要はありません。
MySQLやPostgreSQLなどのリレーショナルデータベースを使用する場合、ユーザーがデータベースアクティビティを実行するために自分自身を認証する必要がある、少なくともある程度の認証が付属しています。
しかし、MongoDBの場合はそうではありません。すべてのユーザーは、認証なしで任意のデータベースにアクセスし、任意の操作を実行できます。
この問題を解決するには、まず日常業務用の管理者ユーザーを作成します。
次に、MongoDBの構成ファイルを編集してアクセス制御を有効にする必要があります。
vi /etc/mongod.conf
以下の行を追加します。
security:
authorization: enabled
透過的な巨大ページは、データベースワークロードのパフォーマンスの問題を引き起こすことがよくあります。そのため、MongoDBでは、最高のパフォーマンスを得るために、巨大なページを無効にすることをお勧めします。
ディレクトリを作成して、調整されたプロファイルファイルを配置し、巨大なページを無効にします。
mkdir /etc/tuned/virtual-guest-no-thp
ファイルを作成します。
vi /etc/tuned/virtual-guest-no-thp/tuned.conf
以下の行を有効なファイルに配置します。
[main]
include=virtual-guest
[vm]
transparent_hugepages=never
新しく作成したプロファイルを有効にします。
tuned-adm profile virtual-guest-no-thp
MongoDBサービスを開始します
MongoDBサービスを開始するには、次を実行します:
systemctl start mongod
ステータスMongoDBサービスを確認するには、次を実行します:
systemctl status mongod
出力:●mongod.service-ロードされたMongoDBデータベースサーバー:ロードされた(/usr/lib/systemd/system/mongod.service;有効;ベンダープリセット:無効)アクティブ:月2020-08-10以降アクティブ(実行中) 13:10:15 EDT; 11秒前ドキュメント:https://docs.mongodb.org/manualプロセス:3147 ExecStart =/ usr / bin / mongod $ OPTIONS(code =exited、status =0 / SUCCESS)プロセス:3145 ExecStartPre =/ usr / bin / chmod 0755 / var / run / mongodb(code =exited、status =0 / SUCCESS)プロセス:3143 ExecStartPre =/ usr / bin / chown mongod:mongod / var / run / mongodb(code =exited、status =0/SU>プロセス:3141 ExecStartPre =/ usr / bin / mkdir -p / var / run / mongodb(code =exited、status =0 / SUCCESS)メインPID:3149(mongod)メモリ:61.1M CGroup:/system.slice/mongod.service └─3149/usr/ bin / mongod -f /etc/mongod.confAug 10 13:10:14 centos8.itzgeek.local systemd [1]:MongoDBデータベースサーバーを起動しています... Aug 10 13:10:14 centos8.itzgeek .local mongod [3147]:子プロセスをフォークしようとして、サーブまで待機> Aug 10 13:10:14 centos8.itzgeek.local mongod [3147]:フォークプロセス:3149Aug 10 13:10:15 centos8.itzgeek.local mongod [3147]:子プロセスが正常に開始され、親exiti> Aug 10 13:10:15 centos8.itzgeek.local systemd [1]:MongoDBデータベースサーバーが開始されました。MongoDBのバージョンを確認してください。
mongod --version
Output:db version v4.4.0Build Info:{"version": "4.4.0"、 "gitVersion": "563487e100c4215e2dce98d0af2a6a5a2d67c5cf"、 "openSSLVersion": "OpenSSL 1.1.1c FIPS 28 May 2019"、 "modules" :[]、 "allocator": "tcmalloc"、 "environment":{"distmod": "rhel80"、 "distarch": "x86_64"、 "target_arch": "x86_64"}}netstatコマンドを使用して、MongoDBがポート27017でリッスンしているかどうかを確認します。
netstat -antup | grep -i 27017
Output:tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 6898 / mongod読む: CentOS 7 / RHEL 7でnetstatコマンドが見つかりません–クイックフィックス
MongoDBにアクセス 次のコマンドを入力して、MongoDBシェルに接続します。
mongo
出力:MongoDBシェルバージョンv4.4.0接続先:mongodb://127.0.0.1:27017 /?compressors =disable&gssapiServiceName =mongodb暗黙のセッション:セッション{"id":UUID( "3ecdceaa-5050-41a3-96e3-8f821362523b ")} MongoDBサーバーのバージョン:4.4.0 MongoDBシェルへようこそ。インタラクティブなヘルプについては、「help」と入力してください。より包括的なドキュメントについては、https://docs.mongodb.com/Questions?を参照してください。 MongoDB開発者コミュニティフォーラムhttps://community.mongodb.com>をお試しください結論 それで全部です。今では、CentOS 8 /RHEL8システムにMongoDBがインストールされていることを願っています。コメントセクションでフィードバックを共有してください。
Cent OS