小太阳的博客

linux安装Mongodb

下载地址:https://www.mongodb.com/download-center/community

安装

1.解压
tar -zxvf mongodb-linux-x86_64-3.4.24.tgz

2.创建2个文件夹,存放数据库和日志
cd mongodb-linux-x86_64-3.4.24
mkdir logs
mkdir datas

3.开放权限
chmod 777 logs
chmod 777 datas

4.创建配置文件
cd bin/
vi mongodb.conf

5.添加配置
port=11111																							- //默认服务器端口号
fork=true																								- //后台运行
dbpath=/application/mongodb-11111/datas			- //数据存储目录
logpath=/application/mongodb-11111/logs//mongodb.log	- //日志文件 - 提前创建好
logappend=false																					- //使用追加的方式写日志
maxConns=5000																						- //最大同时连接数,默认2000
directoryperdb=true
wiredTigerCacheSizeGB=30
oplogSize=30
bind_ip=0.0.0.0
auth=true

6.启动mongodb
./mongod --config mongodb.conf

7.检查是否启动成功
netstat -anpt | grep mongod

8.kill方式关闭mongodb
先获取到pid,能看到2个进程,一个是命令的进程(不用管),另一个是需要结束的进程(带配置文件刚才启动的进程)
ps aux | grep mongod
然后kill掉进程
kill -2 pid

9.连接mongodb后,关闭mongodb
use admin;
db.shutdownServer(); 或者 db.runCommand("shutdown");

启动多实例

多台服务器直接按照上面流程安装。
在单台服务器资源充分的情况下,可以使用多实例,以便充分使用服务器资源。

1.拷贝mongodb.conf文件
cp mongodb.conf mongodb2.conf

2.新建文件夹
mkdir logs2
mkdir datas2

3.修改端口号以及日志和数据库路径等内容
vi mongodb2.conf

4.启动多实例
./mongod --config mongodb.conf
./mongod --config mongodb2.conf

5.检查启动是否成功
netstat -anpt | grep mongod

Mongodb日志文件过大问题解决

第一种方式
进入到mongo的命令行交互程序,输入:
use admin
db.runCommand({logRotate: 1})
此种方式只能让主mongo的日志滚动。如果是集群部署的话,其他机上的mongo日志并不会滚动。 
这样会使mongo关闭当前日志文件,重启一个新的日志文件,不需要停止mongodb服务。

第二种方式
在Linux的命令上输入如下命令:
ps aux | grep mongo
找到mongodb的进程ID,记下来。在输入命令:
kill -SIGUSR1 <pid>
此种方式只能修改当前机器上的mongo日志滚动。如果是集群部署,需要在所有运行mongodb的机上执行此命令。

第三种方式
日志分割
mongo默认是没有进行日志分割的,所有的日志持续写到一个文件中。缺点是很明显的,日志文件会越来越大
在第二种方式的基础上,写一个shell脚本,来分割日志。

新建脚本mongodb_log_rotate.sh
#!/bin/sh

datafile=/var/run/mongodb
logfile=/var/log/mongodb
days=15
/bin/kill -SIGUSR1 `cat $datafile/mongod.pid`

find $logfile/ -mtime +$days -delete

然后将脚本加入到定时任务,crontab配置每晚凌晨0点执行
0 0 * * * /opt/shell/mongodb_log_rotate.sh > /dev/null 2>&1 &

Copyright © 2023,版权所有 - 小太阳的博客 - 黑ICP备2023000004号