MongoDBデータベースのインストールとデプロイメント、および警告の最適化
MongoDB インストールの展開と警告の最適化
1. ソフトウェアダウンロード
バージョン3.6.13: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.13.tgz
バージョン4.0.14: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.14.tgz
公式ドキュメント: https://docs.mongodb.com/manual/
2. MongoDBのデプロイ
2.1. デプロイメントディレクトリの計画
Program directory
[root@mongodb-1 ~]# mkdir /data/mongodb_cluster/mongodb_27017/{conf,data,logs,pid} -p
Software directory
[root@mongodb-1 ~]# mkdir /data/soft
[root@mongodb-1 ~]# tree /data/
/data/
├── mongodb_cluster
│ └── mongodb_27017
│ ├── conf
│ ├── data
│ ├── logs
│ └── pid
└─ soft
7 directories, 0 files
[root@mongodb-1 ~]# cd /data/soft/
[root@mongodb-1 /data/soft]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.14.tgz
2.2. パッケージのダウンロード
1. Unpack MongoDB
[root@mongodb-1 /data/soft]# tar xf mongodb-linux-x86_64-4.0.14.tgz -C /data/mongodb_cluster/
2. Make a soft connection
[root@mongodb-1 /data/soft]# cd /data/mongodb_cluster/
[root@mongodb-1 /data/mongodb_cluster]# ln -s mongodb-linux-x86_64-4.0.14/ mongodb
3. Create the MongoDB configuration file directory
[root@mongodb-1 ~]# mkdir /data/mongodb_cluster/mongodb_27017/{conf,data,logs,pid} -p
[root@mongodb-1 ~]# tree /data/ -d
/data/
├── mongodb_cluster
│ ├── mongodb -> mongodb-linux-x86_64-4.0.14/
│ ├── mongodb_27017
│ │ ├── conf
│ │ ├── data
│ │ ├── logs
│ │ ├── pid
│ └── mongodb-linux-x86_64-4.0.14
│ └── bin
└── soft
Configuration file annotations.
systemLog:
destination: file //Mongodb log output as a file
logAppend: true //no new log file is created when the instance is restarted, the logs are added at the end of the old log file
path: /data/mongodb_cluster/mongodb_27017/logs/mongodb.log //log path
storage:
journal: //rollback log, similar to mysql's binlog
enabled: true //Enable rollback logging
dbPath: /data/mongodb_cluster/mongodb_27017/data //data storage directory
directoryPerDB: true //default, false does not apply to inmemoryengine
wiredTiger: //storage engine
engineConfig:
cacheSizeGB: 1 //will be used for all data cache size
directoryForIndexes: true //default false index collection storage.dbPath stored in a separate subdirectory of data, here must be configured to true, otherwise all library data files will be stored in a directory
collectionConfig:
blockCompressor: zlib //enable compression
indexConfig:
prefixCompression: true //enable indexing
processManagement: //System daemon control processing
fork: true //runs in the background
pidFilePath: /data/mongodb_cluster/mongodb_27017/pid/mongod.pid //pid file path
net:
port: 27017 //listening port
bindIp: 127.0.0.1,192.168.81.210 //bind ip
[root@mongodb-1 ~]# cd /data/mongodb_cluster/mongodb_27017/
[root@mongodb-1 /data/mongodb_cluster/mongodb_27017]# vim conf/mongodb.yml
systemLog:
destination: file
logAppend: true
path: /data/mongodb_cluster/mongodb_27017/logs/mongodb.log
storage:
journal:
enabled: true
dbPath: /data/mongodb_cluster/mongodb_27017/data
directoryPerDB: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
pidFilePath: /data/mongodb_cluster/mongodb_27017/pid/mongod.pid
net:
port: 27017
bindIp: 127.0.0.1,192.168.81.210
1. Start MongoDB
[root@mongodb-1 ~]# cd /data/mongodb_cluster
[root@mongodb-1 /data/mongodb_cluster]# . /mongodb/bin/mongod -f mongodb_27017/conf/mongodb.yml
about to fork child process, waiting until server is ready for connections.
forked process: 73550
child process started successfully, parent exiting
2. Check the processes and ports
[root@mongodb-1 /data/mongodb_cluster]# ps aux | grep mongo
[root@mongodb-1 /data/mongodb_cluster]# netstat -lnpt | grep mongo
2.3. MongoDBのインストール
MongoDBはダウンロード後、直接解凍して使用することができ、設定ファイルは含まれていませんので、自分で作成する必要があります
1. Command line shutdown of MongoDB
[root@mongodb-1 ~]# cd /data/mongodb_cluster
[root@mongodb-1 /data/mongodb_cluster]# . /mongodb/bin/mongod -f mongodb_27017/conf/mongodb.yml --shutdown
killing process with pid: 73550
2. Shutdown MongoDB interactively
[mongo@mongodb-1 ~]$mongo
> use admin
switched to db admin
> db.shutdownServer()
View processes and ports
[root@mongodb-1 /data/mongodb_cluster]# ps aux | grep mongo
[root@mongodb-1 /data/mongodb_cluster]# netstat -lnpt | grep mongo
2.4. MongoDB設定ファイル入門
1. Start MongoDB
[root@mongodb-1 ~]# cd /data/mongodb_cluster
[root@mongodb-1 /data/mongodb_cluster]# . /mongodb/bin/mongod -f mongodb_27017/conf/mongodb.yml
2. Login to MongoDB
[root@mongodb-1 /data/mongodb_cluster]# . /mongodb/bin/mongo
2.5. MongoDB設定ファイルの書き方
2021-02-13T10:44:47.832+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2.6. MongoDBの起動
1. Shutting down MongoDB
[root@mongodb-1 /data/mongodb_cluster]# . /mongodb/bin/mongod -f mongodb_27017/conf/mongodb.yml --shutdown
2. Create user
[root@mongodb-1 ~]# useradd mongo
[root@mongodb-1 ~]# echo "123456" | passwd --stdin mongo
3. Empowerment
[root@mongodb-1 ~]# chown -R mongo.mongo /data/mongodb_cluster/
4. Login to the normal user and configure the environment variables
[root@mongodb-1 ~]# su - mongo
[mongo@mongodb-1 ~]$ vim .bashrc
export PATH=/data/mongodb_cluster/mongodb/bin/:$PATH
[mongo@mongodb-1 ~]$ source .bashrc
5. Start MongoDB
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
about to fork child process, waiting until server is ready for connections.
forked process: 73835
child process started successfully, parent exiting
6. Login to MongoDB
[mongo@mongodb-1 ~]$ mongo
<イグ
2.7. MongoDBを終了する方法
MongoDBを直接シャットダウンするには、startコマンドの後に-shutdownを付けます。
MongoDBをシャットダウンする2つの方法
** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
** We suggest setting it to 'never'
** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
** We suggest setting it to 'never'
2.8. MongoDBへのログイン
MongoDB にログインするには mongo コマンドが必要です。
1. Prepare the init script
[root@mongodb-1 ~]# vim /etc/init.d/disable-transparent-hugepages
#! /bin/bash
### BEGIN INIT INFO
# Provides: disable-transparent-hugepages
# Required-Start: $local_fs
# Required-Stop:
# X-Start-Before: mongod mongodb-mms-automation-agent
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Disable Linux transparent huge pages
# Description: Disable Linux transparent huge pages, to improve
# ### END INIT INFO: Disable Linux transparent huge pages, to improve database performance.
### END INIT INFO
case $1 in
start)
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
thp_path=/sys/kernel/mm/transparent_hugepage
elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
thp_path=/sys/kernel/mm/redhat_transparent_hugepage
else
return 0
fi
echo 'never' | tee ${thp_path}/enabled > /dev/null
unset thp_path
;;
esac
2. Empower and add as bootable
[root@mongodb-1 ~]# chmod 755 /etc/init.d/disable-transparent-hugepages
[root@mongodb-1 ~]# chkconfig --add disable-transparent-hugepages
[root@mongodb-1 ~]# chkconfig --list | grep disa
3. Restart MongoDB
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
4. Login to mongdo to see the warnings
[mongo@mongodb-1 ~]$ mongo
1. Temporarily shutting down in-memory pages
[root@mongodb-1 ~]# echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
[root@mongodb-1 ~]# echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
[root@mongodb-1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@mongodb-1 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
2. Restart MongoDB
[root@mongodb-1 ~]# su - mongo
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
3. Login to MongoDB to view alerts
[mongo@mongodb-1 ~]$ mongo
ログイン後、いくつかの警告メッセージが表示されますが、これを 3 で最適化します。
3. MongoDB の警告メッセージの最適化
3.1. 起動時のユーザー警告の最適化
警告の内容
** WARNING: soft rlimits too low. rlimits set to 15324 processes, 65535 files. number of processes should be at least 32767.5: 0.5 times number of files.
この警告は、rootで直接起動しないようにするための注意喚起であり、通常のユーザーで起動する必要があります。
アイデア 通常ユーザーを作成し、MongoDBの配置ディレクトリを通常ユーザーに割り当て、通常ユーザーで起動する。
1. adjust the limit (this method is effective without rebooting the machine)
cat > /etc/profile<<EOF
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 64000
EOF
source /etc/profile
2. Restart MongoDB
[root@mongodb-1 ~]# su - mongo
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
起動ユーザーに対する警告メッセージが消えているのがわかると思います
3.2. 大きなメモリページの警告を最適化する
警告の内容
** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
** We suggest setting it to 'never'
** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
** We suggest setting it to 'never'
これは、ラージメモリの設定が常に、MongoDBは決して使用しないことを推奨しているためです。
3.2.1. 大きなメモリページの永続的なクローズ
公式ドキュメント:https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/
1. Prepare the init script
[root@mongodb-1 ~]# vim /etc/init.d/disable-transparent-hugepages
#! /bin/bash
### BEGIN INIT INFO
# Provides: disable-transparent-hugepages
# Required-Start: $local_fs
# Required-Stop:
# X-Start-Before: mongod mongodb-mms-automation-agent
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Disable Linux transparent huge pages
# Description: Disable Linux transparent huge pages, to improve
# ### END INIT INFO: Disable Linux transparent huge pages, to improve database performance.
### END INIT INFO
case $1 in
start)
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
thp_path=/sys/kernel/mm/transparent_hugepage
elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
thp_path=/sys/kernel/mm/redhat_transparent_hugepage
else
return 0
fi
echo 'never' | tee ${thp_path}/enabled > /dev/null
unset thp_path
;;
esac
2. Empower and add as bootable
[root@mongodb-1 ~]# chmod 755 /etc/init.d/disable-transparent-hugepages
[root@mongodb-1 ~]# chkconfig --add disable-transparent-hugepages
[root@mongodb-1 ~]# chkconfig --list | grep disa
<イグ
3. Restart MongoDB
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
4. Login to mongdo to see the warnings
[mongo@mongodb-1 ~]$ mongo
3.2.2. 大きなメモリページを一時的に閉じる
1. Temporarily shutting down in-memory pages
[root@mongodb-1 ~]# echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
[root@mongodb-1 ~]# echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
[root@mongodb-1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@mongodb-1 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
2. Restart MongoDB
[root@mongodb-1 ~]# su - mongo
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
3. Login to MongoDB to view alerts
[mongo@mongodb-1 ~]$ mongo
メモリページが大きいという警告が解決されたことがわかります。
3.3. 制限警告の最適化
警告の内容
** WARNING: soft rlimits too low. rlimits set to 15324 processes, 65535 files. number of processes should be at least 32767.5: 0.5 times number of files.
ヒントは、limtで設定したオープンファイルの数が少なすぎることです
1. adjust the limit (this method is effective without rebooting the machine)
cat > /etc/profile<<EOF
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 64000
EOF
source /etc/profile
2. Restart MongoDB
[root@mongodb-1 ~]# su - mongo
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン