温馨提示×

Debian怎么迁移MongoDB

小樊
52
2026-08-28 15:19:10
栏目: 云计算

在 Debian 上迁移 MongoDB,常见场景有几种,我按最常用、最稳妥的方式来说明。你可以根据自己的情况选择。


一、迁移方式概览

场景 推荐方式
同版本 / 升级版本 mongodump + mongorestore
大数据量 / 高可用 副本集(Replica Set)
云服务迁移 云厂商工具(如 Atlas Live Migration)
物理机 → 物理机 直接拷贝数据目录(风险较高)

✅ 最通用、最安全:mongodump + mongorestore


二、使用 mongodump + mongorestore(推荐)

1️⃣ 在源服务器(旧 Debian)操作

安装 MongoDB 工具

sudo apt update
sudo apt install mongodb-org-tools

备份所有数据库

mongodump --out /data/mongodb_backup

可选(指定用户、端口):

mongodump -u admin -p password --authenticationDatabase admin -o /data/mongodb_backup

打包(可选)

tar -czvf mongodb_backup.tar.gz /data/mongodb_backup

2️⃣ 传输备份到新服务器

scp mongodb_backup.tar.gz user@new_server_ip:/data/

3️⃣ 在新 Debian 上安装 MongoDB

添加 MongoDB 官方源(示例:MongoDB 6.0)

curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | \
sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-6.0.gpg

echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] \
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/6.0 main" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt update
sudo apt install -y mongodb-org

启动 MongoDB:

sudo systemctl enable mongod
sudo systemctl start mongod

4️⃣ 在新服务器恢复数据

tar -xzvf mongodb_backup.tar.gz
mongorestore /data/mongodb_backup

指定用户恢复:

mongorestore -u admin -p password --authenticationDatabase admin /data/mongodb_backup

5️⃣ 验证数据

mongosh
show dbs

三、使用副本集迁移(零停机,推荐生产环境)

适合:

  • 数据量大
  • 业务不能停

原理

  1. 新节点加入副本集
  2. 数据自动同步
  3. 切换主节点
  4. 下线旧节点

简要步骤

1️⃣ 旧节点(已运行)

mongosh
rs.initiate()

2️⃣ 新节点加入副本集

rs.add("new_server_ip:27017")

3️⃣ 等待同步完成

rs.status()

4️⃣ 切换主节点

rs.stepDown()

5️⃣ 从副本集中移除旧节点

rs.remove("old_server_ip:27017")

✅ 业务几乎无感知


四、直接拷贝数据目录(不推荐)

⚠️ 风险高,仅适用于:

  • 相同 MongoDB 版本
  • 停机迁移
systemctl stop mongod
cp -a /var/lib/mongodb /new/path
systemctl start mongod

五、迁移后检查清单 ✅

  • [ ] MongoDB 版本一致或兼容
  • [ ] 用户 / 权限是否迁移
  • [ ] 应用连接字符串是否更新
  • [ ] 防火墙(27017)
  • [ ] 是否启用鉴权

六、我可以继续帮你

你可以告诉我:

  1. MongoDB 版本(mongod --version)
  2. Debian 版本(cat /etc/os-release)
  3. 是否生产环境
  4. 数据量大小

我可以给你一份完全贴合你环境的迁移方案。

0 踩