安亿程序开发

Debian如何迁移MongoDB

2 次浏览
# 云计算 # debian

在 Debian 上迁移 MongoDB,常见场景有 同机迁移目录 / 跨服务器迁移 / 升级迁移。下面按最常用、最稳妥的方式给你一个完整方案,适用于 MongoDB 4.4 / 5.x / 6.x / 7.x(APT 安装方式)。 一、迁移前准备 1️⃣ 确认版本 mongod --version mongo --version # 或 mongosh 2️⃣ 停止 MongoDB s

在 Debian 上迁移 MongoDB,常见场景有 同机迁移目录 / 跨服务器迁移 / 升级迁移。下面按最常用、最稳妥的方式给你一个完整方案,适用于 MongoDB 4.4 / 5.x / 6.x / 7.x(APT 安装方式)。


一、迁移前准备

1️⃣ 确认版本

mongod --version
mongo --version   # 或 mongosh

2️⃣ 停止 MongoDB

sudo systemctl stop mongod

⚠️ 一定要先停服,否则数据可能损坏


二、迁移数据目录(本地迁移)

默认路径

/var/lib/mongodb
/etc/mongod.conf

1️⃣ 复制数据目录

sudo cp -a /var/lib/mongodb /new/path/mongodb

或移动:

sudo mv /var/lib/mongodb /new/path/mongodb

2️⃣ 修改配置文件

sudo nano /etc/mongod.conf

修改:

storage:
  dbPath: /new/path/mongodb

3️⃣ 修复权限(非常重要)

sudo chown -R mongodb:mongodb /new/path/mongodb

4️⃣ 重启 MongoDB

sudo systemctl start mongod
sudo systemctl status mongod

三、跨服务器迁移(推荐 ✅)

✅ 方法一:mongodump / mongorestore(最安全)

源服务器

mongodump --out /backup/mongo-$(date +%F)

拷贝到目标服务器

scp -r /backup/mongo-2026-01-21 user@target:/backup/

目标服务器

mongorestore /backup/mongo-2026-01-21

✅ 适用场景:

  • 不同版本
  • 不同架构
  • 云服务器迁移

✅ 方法二:直接拷贝数据目录(仅限同版本)

源服务器

systemctl stop mongod
tar czf mongo.tar.gz /var/lib/mongodb

目标服务器

systemctl stop mongod
tar xzf mongo.tar.gz -C /
chown -R mongodb:mongodb /var/lib/mongodb
systemctl start mongod

⚠️ 必须 MongoDB 主版本一致


四、配置文件迁移

/etc/mongod.conf

常见需要同步的内容:

bindIp: 0.0.0.0
port: 27017
storage.dbPath
systemLog.path

五、用户 / 权限迁移

如果启用了认证:

security:
  authorization: enabled

✅ 用户数据在 admin 库中,使用 mongodump 会自动迁移
❌ 直接拷贝目录时也会保留


六、升级迁移(Debian + MongoDB)

1️⃣ 备份

mongodump --out /backup

2️⃣ 升级 MongoDB

sudo apt update
sudo apt upgrade mongod

3️⃣ 启动并验证

mongosh
show dbs

七、常见问题排查

❌ 启动失败

journalctl -xe
cat /var/log/mongodb/mongod.log

❌ 权限错误

sudo chown -R mongodb:mongodb /var/lib/mongodb

❌ 端口占用

ss -lntp | grep 27017

八、推荐迁移方案总结

场景 推荐方式
同机换目录 拷贝 + 改配置
跨服务器 mongodump
升级 dump + 升级
Docker volume 迁移

如果你愿意,可以告诉我:

  • ✅ Debian 版本(10 / 11 / 12)
  • ✅ MongoDB 版本
  • ✅ 是否跨服务器
  • ✅ 是否启用认证

我可以给你 精确到命令级别 的迁移方案。