MongoDB数据迁移至Ubuntu的步骤
read/readWrite)执行导出操作;若迁移过程中需保证数据一致性,建议停止业务写入或在低峰期操作。sudo apt update && sudo apt install mongodb安装,默认版本可能较旧,建议通过MongoDB官方仓库安装最新稳定版)。在源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
使用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为目标目录。登录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)。testdb数据库):mongorestore --host localhost --port 27017 --username admin --password 123456 --authenticationDatabase admin /home/ubuntu/mongo_dump/testdb
若源数据库与Ubuntu目标数据库版本差异较大或需跨系统迁移,可使用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
使用scp将JSON文件传输到Ubuntu服务器的目标目录:
scp /home/user/users.json ubuntu@192.168.1.100:/home/ubuntu/users.json
登录Ubuntu服务器,执行以下命令将JSON文件导入到目标MongoDB集合:
mongoimport --host localhost --port 27017 --username <目标数据库用户名> --password <目标数据库密码> --authenticationDatabase admin --db <目标数据库名> --collection <目标集合名> --file /home/ubuntu/users.json --jsonArray
--file指定导入文件路径;--jsonArray表示文件为JSON数组格式(若为单条记录可省略)。testdb数据库的users集合):mongoimport --host localhost --port 27017 --username admin --password 123456 --authenticationDatabase admin --db testdb --collection users --file /home/ubuntu/users.json --jsonArray
mongo --host localhost --port 27017),切换至目标数据库(use testdb),查看集合是否存在(show collections),并查询数据(db.users.find().pretty())。db.<集合名>.countDocuments())、关键字段值(如_id、name),确保数据无遗漏或错误。db.<集合名>.createIndex({字段: 1}))。db.createUser({user: 'app_user', pwd: 'secure_pwd', roles: [{role: 'readWrite', db: 'testdb'}]})),避免使用admin账户直接访问。/etc/mongod.conf)中的security.authorization为enabled,重启服务(sudo systemctl restart mongod)。