centos上MongoDB采坑记录及解决

工作中需要用到MongoDB这种nosql,因为第一次接触,部署和启动踩了不少坑,记录一下

安装MongoDB4.2:

分离线和在线的两种:

在线:

参考这个大佬的https://www.cnblogs.com/SnowBaby/p/11569541.html

离线:

下载离线包

链接:https://pan.baidu.com/s/1Mk0TpNfn4BnMQchdfBk27w
提取码:wd30

下载完后用xftp工具上传到/usr/local目录下,然后使用tar命令进行归档

找到配置文件mongod.conf 进行修改

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /data/db
  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: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

确定数据存储目录和日志存储目录,以及ip设为0.0.0.0允许远程访问

之后使用命令mongod -f etc/mongod.conf直接运行

然后输入mongo会发现没有错误,直接打开mongodb的shell

开启mongod的服务

systemctl start mongod

确保开机自启

systemctl enable mongod

关闭服务

systemctl stop mongod

重启服务

systemctl restart mongod

错误及纠正:

1、Attempted to create a lock file on a read-only directory: /data/db, termina....

一般是/data/db(自己的数据目录)权限不够,使用chown -R 用户名:用户组 /data/db

这里的用户名和用户组必须是和mongod.service一致对应才行,这是大坑

mongod.service一般在/usr/lib/systemd/system/mongod.service

mongod.service文件为

[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /etc/mongod.conf"
EnvironmentFile=-/etc/sysconfig/mongod
ExecStart=/usr/bin/mongod $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

user和group要和之前的权限对应

2、Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Erro

一般是没有开启mongodb的服务

3、当输入mongod -f /etc.mongod.conf启动子进程不成功时可能是因为有mongod.lock文件

先使用

find / -name "mongod.lock"

查到所有的lock文件,然后使用rm -rf强制删掉

然后执行 mongod -f /etc/mongod.conf --repair执行修复

也可以查看日志看是否是端口占用

查看端口:

sudo netstat -anp|more

然后杀掉所有mongod的进程

使用:

sudo kill 端口号

然后再重启

4、日志文件中 WiredTiger错误

一般是

    cd /data/db    //切入数据文件夹
    rm -rf journal 
    rm -rf mongod.lock 
    rm -rf WiredTiger.lock

然后重启服务

5、其他错误:

推荐报错时经常查看

cat /var/log/mongodb/mongod.log

一般日志都会有错误提示,最容易出错的是文件权限的问题

最后经过排查终于成功了,不容易啊。。

centos上MongoDB采坑记录及解决_第1张图片

 

 

 

 

你可能感兴趣的:(MongoDB,MongoDB,踩坑,解决方案)