CentOS 安装 mongodb

本文详细介绍了在 CentOS 上安装 MongoDB 的过程,包括使用 yum 源安装,启动与管理 MongoDB,以及遇到的问题。在安装过程中,讨论了如何修改 MongoDB 的默认数据存储位置以及解决权限问题。此外,还提到了远程连接 MongoDB 的障碍,如防火墙设置和配置文件的调整。总结中强调了遵循官方教程的重要性,并给出了避免常见问题的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CentOS 安装 mongodb

推荐使用 yum 源头安装方式,便于管理

  1. 创建 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
      
  2. yum 安装

    sudo yum install -y mongodb-org

  3. 启动 mongodb

    sudo systemctl start mongod

  4. 查看 mongod 状态

    sudo systemctl status mongod

  5. 设置开机启动

    sudo systemctl enable mongod

  6. 关闭 mongod

    sudo systemctl stop mongodb

  7. 重启

    sudo systemctl restart mongodb

以上是针对 CentOS 安装 mongodb 方法,且没有修改 mongod 默认配置,参考 mongodb 官方提供教程:官方教程

遇到的问题

修改 mongodb 数据默认存储位置

mongodb 数据默认存储目录为 /var/lib/mongodb ,可以通过 cat /etc/mongodb.conf 查看。该目录实际上时挂载在 /root 下,但是我们自己服务器在配置时默认值分配给 /root 50G,由于我们数据量很大,50G 完全不够用,因此想着修改 mongodb 默认存储目录,将数据存放到 /home 目录下,但是修改后引发一系列问题

  1. 修改后无法正常启动 mongodb:ERROR: child process failed, exited with 14

    解决方式:进入 /tmp 目录,删除 mongodb-xxx.sock 文件

  2. 后面有爆出 /xxx/mongdb.lock Permission Error,修改文件权限为 mongod, `sudo chown -R mongod:mongod ,发现还是不行,查找资料发现可能是 SLinux 问题,于是关闭 SLinux ,还是不行,后面推测可能是因为修改 mongodb 数据存储目录 /home问题,不能数据存储目录修改为 /home 下

  3. 多次尝试之后无法解决,于是想着另外的方式解决:将 /root 目录扩容,实现曲线救国,说干就干:

    修改 Linux 磁盘分区大小

    • 系统环境: Red Hat

    • 情况:

      • home: 3.7T
      • root: 50G
      • root 分区空间完全不够
      • 想法💡:将 home 分区的空间划一部分到 root 分区
  4. 查看当前磁盘使用情况

    $ 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
    
  5. 分析

    • 挂载根目录的分区空间太小,只有 50G,而服务器 home 目录为非常用目录,但是空间太大,因此可以将 home 中的空间划分一部分到 root 下
  6. 操作步骤

    • 查看各个分区信息

      $ 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 即可,修改后在连接就可以啦✅

总结:

  1. 尽量不要修改 mongodb 默认数据存储目录,如果确实要修改应该先确认修改后的目录是否有权限
  2. 在连接远程 mongodb 时,需要先将 27017 端口开发,再修改 /etc/mongodb.conf 中 bindIp 为 0.0.0.0
  3. 安装时最好找找官网是否提供教程,可以少走很多弯路
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值