温馨提示×

centos mongodb怎样恢复数据

小樊
53
2026-10-11 18:18:09
栏目: 云计算

在 CentOS 上恢复 MongoDB 数据,常见方式主要有 mongorestore 恢复备份、从副本集/分片恢复、通过 WiredTiger 文件恢复 等。下面按最常用场景给你说明。


一、使用 mongorestore 恢复(最常见)

1. 前提

你之前使用过 mongodump 做过备份,例如:

mongodump --host 127.0.0.1 --port 27017 -o /data/mongo_backup

2. 恢复整个实例

mongorestore --host 127.0.0.1 --port 27017 /data/mongo_backup

3. 恢复指定数据库

mongorestore --db mydb /data/mongo_backup/mydb

4. 恢复指定集合

mongorestore --db mydb --collection users /data/mongo_backup/mydb/users.bson

5. 带认证的恢复

mongorestore \
  --host 127.0.0.1 \
  --port 27017 \
  -u admin \
  -p password \
  --authenticationDatabase admin \
  /data/mongo_backup

二、恢复前清空旧数据(覆盖恢复)

⚠️ 默认 mongorestore 不会删除原有数据,可能重复插入。

方式 1:先删库

mongo
> use mydb
> db.dropDatabase()

方式 2:使用 --drop

mongorestore --drop /data/mongo_backup

三、从物理文件恢复(WiredTiger)

适用于:

  • 服务器崩溃
  • 没有 mongodump
  • 有 /var/lib/mongo 数据目录

步骤

  1. 停止 MongoDB
systemctl stop mongod
  1. 备份当前数据(防误操作)
mv /var/lib/mongo /var/lib/mongo_bak
  1. 拷贝旧数据
cp -r /backup/mongo /var/lib/mongo
  1. 修改权限
chown -R mongod:mongod /var/lib/mongo
  1. 启动
systemctl start mongod

⚠️ 版本必须一致(MongoDB 大版本一致)


四、副本集环境恢复

如果是副本集:

  • 在主节点执行 mongorestore
  • 或使用 --oplogReplay 恢复时间点
mongorestore --oplogReplay /data/mongo_backup

五、CentOS 常见注意事项

SELinux 导致启动失败

setenforce 0
# 或修改
vi /etc/selinux/config
SELINUX=disabled

防火墙

firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload

六、恢复失败常见原因

  • MongoDB 版本不一致
  • 数据目录权限错误
  • 认证数据库错误
  • 磁盘空间不足

如果你能告诉我:

  • MongoDB 版本
  • 是否有 mongodump 备份
  • 是单机 / 副本集
  • 数据丢失原因

我可以给你 更精确的恢复命令。

0 踩