CentOS 安装 mongodb
推荐使用 yum 源头安装方式,便于管理
-
创建 mongodb yum 源头
-
vim /etc/yum.repos.d/mongodb-org-5.0.repo
-
编辑刚刚创建的文件,将下面👇内容写入
[mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
-
-
yum 安装
sudo yum install -y mongodb-org
-
启动 mongodb
sudo systemctl start mongod
-
查看 mongod 状态
sudo systemctl status mongod
-
设置开机启动
sudo systemctl enable mongod
-
关闭 mongod
sudo systemctl stop mongodb
-
重启
sudo systemctl restart mongodb
以上是针对 CentOS 安装 mongodb 方法,且没有修改 mongod 默认配置,参考 mongodb 官方提供教程:官方教程
遇到的问题
修改 mongodb 数据默认存储位置
mongodb 数据默认存储目录为 /var/lib/mongodb
,可以通过 cat /etc/mongodb.conf
查看。该目录实际上时挂载在 /root 下,但是我们自己服务器在配置时默认值分配给 /root 50G,由于我们数据量很大,50G 完全不够用,因此想着修改 mongodb 默认存储目录,将数据存放到 /home 目录下,但是修改后引发一系列问题
-
修改后无法正常启动 mongodb:
ERROR: child process failed, exited with 14
解决方式:进入 /tmp 目录,删除
mongodb-xxx.sock
文件 -
后面有爆出
/xxx/mongdb.lock Permission Error
,修改文件权限为 mongod, `sudo chown -R mongod:mongod ,发现还是不行,查找资料发现可能是 SLinux 问题,于是关闭 SLinux ,还是不行,后面推测可能是因为修改 mongodb 数据存储目录 /home问题,不能数据存储目录修改为 /home 下 -
多次尝试之后无法解决,于是想着另外的方式解决:将 /root 目录扩容,实现曲线救国,说干就干:
修改 Linux 磁盘分区大小
-
系统环境: Red Hat
-
情况:
- home: 3.7T
- root: 50G
- root 分区空间完全不够
- 想法💡:将 home 分区的空间划一部分到 root 分区
-
-
查看当前磁盘使用情况
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 50G 19M 100% / devtmpfs 32G 0 32G 0% /dev tmpfs 32G 0 32G 0% /dev/shm tmpfs 32G 2.5G 29G 8% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/mapper/centos-home 3.7T 33M 3.7T 1% /home /dev/sda1 497M 238M 259M 48% /boot tmpfs 6.3G 0 6.3G 0% /run/user/0
-
分析
- 挂载根目录的分区空间太小,只有 50G,而服务器 home 目录为非常用目录,但是空间太大,因此可以将 home 中的空间划分一部分到 root 下
-
操作步骤
-
查看各个分区信息
$ lvdisplay --- Logical volume --- LV Path /dev/centos/home LV Name home VG Name centos LV UUID 1fAt1E-bQsa-1HXR-MCE2-5VZ1-xzBz-iI1SLv LV Write Access read/write LV Creation host, time localhost, 2016-10-26 17:23:47 +0800 LV Status available # open 0 LV Size 3.7 TiB Current LE 121778 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID lD64zY-yc3Z-SZaB-dAjK-03YM-2gM8-pfj4oo LV Write Access read/write LV Creation host, time localhost, 2016-10-26 17:23:48 +0800 LV Status available # open 1 LV Size 50.00 GiB Current LE 12800 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
-
减少 /root 分区空间
# 释放 /dev/centos/home 分区 300G 的空间 # 命令设置 /dev/centos/home 分区 200G空间 $ lvreduce -L 1T /dev/centos/home WARNING: Reducing active logical volume to 200.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce centos/home? [y/n]: y Size of logical volume centos/home changed from 475.70 GiB (121778 extents) to 200.00 GiB (51200 extents). Logical volume centos/home successfully resized.
-
增加 /root 分区空间
$ lvextend -l +100%FREE /dev/centos/root Size of logical volume centos/root changed from 50.06 GiB (12816 extents) to 325.76 GiB (83394 extents). Logical volume centos/root successfully resized.
-
扩展 XFS 文件空间大小
$ xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=3276800 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 spinodes=0 data = bsize=4096 blocks=13107200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=6400, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 13107200 to 85395456
-
以上 Liunx 分区修改参考:参考链接🔗
无法连接远程 mongod
以上工作做完后,想着终于能够使用服务器 mongodb 啦,于是喜滋滋的去连接,结果还是不行,使用 telnet 发现服务器端口 27017 不同,猜测可能是服务器 27017 端口未开放,于是使用以下命令开放 27017 端口:
# 开放 27017 端口
firewalld-cmd --zone=public --add-port=27017/tcp --permanent
# 查看 27017 是否开启
firewalld-cmd --query-port=27017/tcp
解决掉端口开放问题,心想着这次应该没问题啦吧,但是但是还是连接不上,后面 google 啦下,发现是 mongodb 配置问题:mongodb 默认配置使用的是 127.0.0.1 只允许本机连接,可有通过 cat /etc/mongod.conf
查看 bindIp,因此我们需要将 mongod.conf 中的 bindIp 修改为 0.0.0.0 即可,修改后在连接就可以啦✅
总结:
- 尽量不要修改 mongodb 默认数据存储目录,如果确实要修改应该先确认修改后的目录是否有权限
- 在连接远程 mongodb 时,需要先将 27017 端口开发,再修改 /etc/mongodb.conf 中 bindIp 为 0.0.0.0
- 安装时最好找找官网是否提供教程,可以少走很多弯路