工作中需要用到MongoDB这种nosql,因为第一次接触,部署和启动踩了不少坑,记录一下
分离线和在线的两种:
参考这个大佬的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
一般日志都会有错误提示,最容易出错的是文件权限的问题
最后经过排查终于成功了,不容易啊。。