mongodb在centos上如何迁移
导读:MongoDB 在 CentOS 上的迁移指南 一、迁移方式总览与选择 逻辑迁移:使用 mongodump/mongorestore 导出为 BSON 或 archive,适合大多数单机、副本集场景,跨版本与跨平台灵活;对运行中的实例有性...
MongoDB 在 CentOS 上的迁移指南
一、迁移方式总览与选择
- 逻辑迁移:使用 mongodump/mongorestore 导出为 BSON 或 archive,适合大多数单机、副本集场景,跨版本与跨平台灵活;对运行中的实例有性能影响,副本集需保证一致性(见下文要点)。
- 物理迁移:直接拷贝 dbPath 数据目录(停机、同版本、同存储引擎优先),适合大数据量、要求快速切换的场景。
- 分片集群:优先使用 MongoDB Atlas/Cloud Manager/Ops Manager 的协调备份恢复;若用逻辑导出,需按官方流程对分片集群做一致性处理。
- 生产建议:对大流量业务,优先考虑 文件系统/块级快照 或云备份以降低停机与性能冲击。
二、方案一 逻辑迁移 mongodump/mongorestore(通用、跨版本友好)
- 步骤
- 源端备份
- 副本集一致性:使用 –oplog 捕获备份期间的写操作,或在备份窗口内停止写入。
- 命令示例:
mongodump --host < 源主机> --port < 端口> -u < 用户> -p < 密码> --authenticationDatabase admin --oplog -o /backup/mongodump_$(date +%F)
- 传输备份
- 归档并流式传输(推荐,减少磁盘 I/O 与中转):
mongodump --host < 源主机> --port < 端口> -u < 用户> -p < 密码> --authenticationDatabase admin --archive | ssh < 目标用户> @< 目标IP> “cat > /backup/mongodump_$(date +%F).archive”
- 归档并流式传输(推荐,减少磁盘 I/O 与中转):
- 目标端恢复
- 基本恢复:
mongorestore --host < 目标主机> --port < 端口> -u < 用户> -p < 密码> --authenticationDatabase admin /backup/mongodump_$(date +%F) - 从归档恢复:
mongorestore --host < 目标主机> --port < 端口> -u < 用户> -p < 密码> --authenticationDatabase admin --archive=/backup/mongodump_$(date +%F).archive - 常用选项:–drop(恢复前删除同名集合,谨慎使用)、–nsInclude/–nsExclude(按库/集合过滤)。
- 基本恢复:
- 验证
- 校验集合数、索引、抽样文档与大小;在业务低峰期做最终一致性核验。
- 源端备份
- 注意
- 逻辑导出会读取全量数据,可能带来性能抖动;备份期间尽量避开高峰。
- 副本集务必使用 –oplog 或停写,避免时点不一致。
- 迁移后检查目标端 featureCompatibilityVersion 与源端一致(必要时在目标端升级/降级后再导入)。
三、方案二 物理迁移 拷贝数据目录(大数据量、同版本优先)
- 适用前提
- 停机窗口可获取;源与目标 MongoDB 大版本一致、存储引擎一致(如 WiredTiger);文件系统与权限可访问。
- 步骤
- 源端停机
- 建议通过 systemd 停止:systemctl stop mongod
- 或在 mongo shell 执行:use admin; db.shutdownServer();
- 拷贝数据目录
- 查看 dbPath:grep ^dbPath /etc/mongod.conf(常见为 /var/lib/mongo 或自定义路径)
- 拷贝:rsync -av /var/lib/mongo/ < 目标主机> :/var/lib/mongo/
- 目标端准备
- 确认 dbPath 权限与属主(如 mongod:mongod),清理可能残留的 mongod.lock 与 diagnostic.data(若存在)。
- 启动与验证
- systemctl start mongod;检查日志与 rs.status()/db.stats()。
- 源端停机
- 说明
- 物理迁移速度快、一致性高,但要求停机且对版本/引擎敏感;跨版本或跨引擎不建议直接物理拷贝。
四、分片集群与高可用场景要点
- 逻辑方式:按官方流程对分片集群做一致性备份(需 停止 balancer、停止写入、停止模式变更),再逐分片导出/导入;恢复后核对 chunk 分布 与 balancer 状态。
- 生产级协调备份:使用 MongoDB Atlas/Cloud Manager/Ops Manager 执行协调快照,可保证跨分片事务的原子性与一致性。
五、CentOS 环境配置与网络要点
- 防火墙放行:
- firewall-cmd --zone=public --add-port=27017/tcp --permanent & & firewall-cmd --reload
- SELinux(如启用):
- 临时:setenforce 0;永久:在 /etc/selinux/config 将 SELINUX=permissive 并重启。
- 配置文件路径:常见为 /etc/mongod.conf;迁移后核对 bindIp(如需要远程访问可设为 0.0.0.0,并配合认证与防火墙策略)。
- 服务管理:
- 启动/开机自启:systemctl start|enable mongod
- 日志排查:journalctl -u mongod -f
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: mongodb在centos上如何迁移
本文地址: https://pptw.com/jishu/756915.html
