MongoDB 个人经验分享 - 安装与修复

47 阅读2分钟

MongoDB 个人经验分享 - 安装与修复

注:以下命令执行环境为 CentOS 7

yum 安装

配置yum源

cat <<EOF >/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
EOF

安装

sudo yum install -y mongodb-org
sudo yum install -y mongodb-org-5.0.7 mongodb-org-database-5.0.7 mongodb-org-server-5.0.7 mongodb-org-shell-5.0.7 mongodb-org-mongos-5.0.7 mongodb-org-tools-5.0.7
exclude=mongodb-org,mongodb-org-database,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
systemctl start mongod

tgz 源码安装

# 安装依赖
sudo yum install libcurl openssl xz-libs checkpolicy
# 下载安装包 可提前本地准备
wget https://fastdl.mongodb.org/linux/mongodb-shell-linux-x86_64-rhel70-5.0.8.tgz
tar zxf mongodb-linux-x86_64-rhel70-5.0.8.tgz
cp mongodb-linux-x86_64-rhel70-5.0.8/bin/* /usr/local/bin/
ln -s mongodb-linux-x86_64-rhel70-5.0.8/bin/* /usr/local/bin/
# 启动mongo
sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
systemctl start mongod

Docker 命令直接启动

docker run -d --name mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD="12345678" -v /data/mongo:/data/db mongo:5.0.3

创建一个管理员用户

mongo --port 27017
use admin
db.createUser(
  {
    user: "root",
    pwd: "12345678",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

可以通过数据库管理工具访问 :27017/admin , root / 12345678 登录数据库。

Mongo 数据修复 Repair

当出现 use --repair 类似日志提示的时候,即需要执行数据修复,原因推测是网络丢包导致数据传输丢失。笔者经常在K8s中运行的Mongo遇到过类似问题,一旦发生修复起来很需要时间,如果没有备份机器对业务影响很大,请谨慎考虑将数据库安装至k8s集群中。

修复方法如下

1. 在 Docker 启动命令镜像后加上 --repair

例如

docker run -d --name mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD="12345678" -v /data/mongo:/data/db mongo:5.0.3 --repair

2. 原生使用 mongod --repair 命令

例如

mongod --dbpath=/var/lib/mongo/ --repair

修复后,重新启动 Mongo 数据库 一切正常。