温馨提示×

MongoDB数据迁移至Ubuntu步骤

小樊
46
2025-10-08 05:42:57
栏目: 云计算

MongoDB数据迁移至Ubuntu的步骤

1. 准备工作

  • 确认源数据库状态:确保源MongoDB实例(本地或云端)处于运行状态,且具备足够的权限(如read/readWrite)执行导出操作;若迁移过程中需保证数据一致性,建议停止业务写入或在低峰期操作。
  • 准备Ubuntu目标环境:确保目标Ubuntu服务器已联网,具备足够的磁盘空间(建议预留源数据库1.2倍以上空间),并安装MongoDB(可通过sudo apt update && sudo apt install mongodb安装,默认版本可能较旧,建议通过MongoDB官方仓库安装最新稳定版)。
  • 工具选择:根据需求选择迁移工具——mongodump/mongorestore(适合二进制备份,保留索引和数据结构,推荐用于生产环境)、mongoexport/mongoimport(适合JSON/CSV格式,跨系统兼容性好,但需重建索引)。

2. 使用mongodump/mongorestore迁移(推荐)

2.1 导出源数据库数据

在源MongoDB服务器上执行以下命令,将指定数据库导出到本地目录(如/home/user/mongo_dump):

mongodump --host <源数据库IP> --port <源数据库端口> --username <用户名> --password <密码> --authenticationDatabase admin --db <源数据库名> --out /home/user/mongo_dump
  • 参数说明:--host/--port指定源数据库地址;--username/--password为认证信息;--authenticationDatabase为认证数据库(通常为admin);--db指定要导出的数据库;--out指定导出目录。
  • 示例(导出本地testdb数据库到/home/user/mongo_dump):
    mongodump --host 127.0.0.1 --port 27017 --username admin --password 123456 --authenticationDatabase admin --db testdb --out /home/user/mongo_dump
    

2.2 传输备份文件至Ubuntu目标服务器

使用scp(安全复制)将导出的备份目录传输到Ubuntu服务器(如ubuntu@192.168.1.100)的目标目录(如/home/ubuntu/mongo_dump):

scp -r /home/user/mongo_dump ubuntu@192.168.1.100:/home/ubuntu/mongo_dump
  • 参数说明:-r表示递归复制整个目录;ubuntu@192.168.1.100为目标服务器的用户名和IP;/home/ubuntu/mongo_dump为目标目录。

2.3 在Ubuntu上恢复数据

登录Ubuntu服务器,执行以下命令将备份数据导入到目标MongoDB实例(默认端口27017):

mongorestore --host localhost --port 27017 --username <目标数据库用户名> --password <目标数据库密码> --authenticationDatabase admin /home/ubuntu/mongo_dump/<源数据库名>
  • 参数说明:--host/--port指定目标数据库地址;--username/--password为目标数据库认证信息;/home/ubuntu/mongo_dump/<源数据库名>为备份目录路径(如/home/ubuntu/mongo_dump/testdb)。
  • 示例(导入到Ubuntu本地testdb数据库):
    mongorestore --host localhost --port 27017 --username admin --password 123456 --authenticationDatabase admin /home/ubuntu/mongo_dump/testdb
    

3. 使用mongoexport/mongoimport迁移(可选)

若源数据库与Ubuntu目标数据库版本差异较大或需跨系统迁移,可使用JSON/CSV格式迁移:

3.1 导出源数据库集合为JSON/CSV

在源服务器上执行以下命令,导出指定集合(如users)到JSON文件:

mongoexport --host <源数据库IP> --port <源数据库端口> --username <用户名> --password <密码> --authenticationDatabase admin --db <源数据库名> --collection <集合名> --out /home/user/users.json
  • 参数说明:--collection指定要导出的集合;--out指定导出文件路径。
  • 示例(导出testdb数据库的users集合到JSON):
    mongoexport --host 127.0.0.1 --port 27017 --username admin --password 123456 --authenticationDatabase admin --db testdb --collection users --out /home/user/users.json
    

3.2 传输导出文件至Ubuntu

使用scp将JSON文件传输到Ubuntu服务器的目标目录:

scp /home/user/users.json ubuntu@192.168.1.100:/home/ubuntu/users.json

3.3 在Ubuntu上导入JSON/CSV文件

登录Ubuntu服务器,执行以下命令将JSON文件导入到目标MongoDB集合:

mongoimport --host localhost --port 27017 --username <目标数据库用户名> --password <目标数据库密码> --authenticationDatabase admin --db <目标数据库名> --collection <目标集合名> --file /home/ubuntu/users.json --jsonArray
  • 参数说明:--file指定导入文件路径;--jsonArray表示文件为JSON数组格式(若为单条记录可省略)。
  • 示例(导入到Ubuntu本地testdb数据库的users集合):
    mongoimport --host localhost --port 27017 --username admin --password 123456 --authenticationDatabase admin --db testdb --collection users --file /home/ubuntu/users.json --jsonArray
    

4. 验证迁移结果

  • 检查集合与数据:登录Ubuntu上的MongoDB(mongo --host localhost --port 27017),切换至目标数据库(use testdb),查看集合是否存在(show collections),并查询数据(db.users.find().pretty())。
  • 验证数据一致性:对比源数据库与目标数据库的记录数(db.<集合名>.countDocuments())、关键字段值(如_idname),确保数据无遗漏或错误。

5. 后续配置(可选)

  • 调整索引:若迁移后查询性能下降,可根据业务需求在目标数据库中重建索引(db.<集合名>.createIndex({字段: 1}))。
  • 配置权限:为目标数据库创建专用用户(db.createUser({user: 'app_user', pwd: 'secure_pwd', roles: [{role: 'readWrite', db: 'testdb'}]})),避免使用admin账户直接访问。
  • 开启认证:若目标MongoDB未开启认证,修改配置文件(/etc/mongod.conf)中的security.authorizationenabled,重启服务(sudo systemctl restart mongod)。

0