MongoDB数据迁移至Ubuntu的操作步骤
目标Ubuntu环境配置
确保目标Ubuntu服务器已安装MongoDB(若未安装,参考后续“安装MongoDB”步骤),并启动服务:
sudo systemctl start mongod
sudo systemctl enable mongod # 设置开机自启
验证服务状态:sudo systemctl status mongod(显示active (running)即为正常)。
源数据库准备
确认源MongoDB数据库(本地/云端)可正常访问,记录源数据库名称、集合名称、连接信息(主机、端口、用户名/密码,若有认证)。
安装MongoDB工具包(Ubuntu)
若目标Ubuntu未安装mongodb-org-tools(包含mongodump、mongorestore等工具),需先安装:
# 导入MongoDB公钥
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
# 添加MongoDB源(替换focal为Ubuntu版本代号,如jammy对应22.04)
echo "deb [arch=amd64,arm64] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
# 更新包列表并安装工具
sudo apt update
sudo apt install -y mongodb-org-tools
mongodump/mongorestore(推荐,适合完整数据库迁移)步骤1:导出源数据库数据
在源环境执行以下命令,将数据库导出到本地目录(如/tmp/dump):
mongodump --uri="mongodb://源主机:27017" --db 源数据库名 --out /tmp/dump
--username 用户名 --password 密码 --authenticationDatabase admin。步骤2:传输导出文件至目标Ubuntu
使用scp(安全复制)将导出目录传输到目标服务器:
scp -r /tmp/dump 目标Ubuntu用户@目标IP:/tmp/
步骤3:导入数据至目标MongoDB
在目标Ubuntu执行以下命令,将数据导入到目标数据库(如目标数据库名,可与源数据库同名):
mongorestore --uri="mongodb://目标UbuntuIP:27017" --db 目标数据库名 /tmp/dump/源数据库名
--username 用户名 --password 密码 --authenticationDatabase admin。--drop参数(会先删除目标数据库中的现有数据)。mongoexport/mongoimport(适合单集合或跨格式迁移)步骤1:导出源集合数据为JSON/CSV
在源环境执行以下命令,导出指定集合到JSON文件(如/tmp/collection.json):
mongoexport --uri="mongodb://源主机:27017" --db 源数据库名 --collection 集合名 --out /tmp/collection.json
--type=csv --fields 字段1,字段2,...。步骤2:传输导出文件至目标Ubuntu
使用scp传输JSON/CSV文件到目标服务器:
scp /tmp/collection.json 目标Ubuntu用户@目标IP:/tmp/
步骤3:导入数据至目标MongoDB
在目标Ubuntu执行以下命令,将JSON/CSV文件导入到目标集合:
mongoimport --uri="mongodb://目标UbuntuIP:27017" --db 目标数据库名 --collection 集合名 --file /tmp/collection.json
--drop参数。--fields 字段1,字段2,...。连接目标MongoDB
在目标Ubuntu执行以下命令,进入MongoDB shell:
mongo --uri="mongodb://目标UbuntuIP:27017"
检查数据库和集合
切换到目标数据库,查看集合是否存在:
use 目标数据库名
show collections
核对数据记录数
查询目标集合的记录数,与源集合对比(确保数据一致性):
db.集合名.countDocuments()
数据一致性
迁移前建议停止源数据库的写入操作(或使用--oplog参数进行增量备份,适用于生产环境),避免数据丢失。
版本兼容性
确保源MongoDB与目标Ubuntu上的MongoDB版本兼容(如源版本为6.0,目标版本建议为6.0及以上)。
网络与权限
read/readWrite、dbAdmin等)。防火墙设置
若目标Ubuntu启用了防火墙(如ufw),允许MongoDB端口:
sudo ufw allow 27017/tcp
索引重建
若迁移后查询性能下降,可在目标数据库中重新创建索引(导出/导入过程不会复制索引):
db.集合名.createIndex({字段名: 1}) // 1表示升序索引
通过以上步骤,即可完成MongoDB数据从本地/云端到Ubuntu服务器的迁移。迁移后建议进行充分的测试,确保应用能正常访问目标数据库。