mongodb数据迁移和恢复
data目录覆盖
把原来的data目录覆盖到最新的data目录,启动shard的时候就出现异常
尝试方案1
mongod --repair --dbpath 数据目录
./mongod --repair --dbpath /opt/mongodb/data/
./mongod -f /opt/mongodb/shard1.conf
shard启动还是异常退出
终极解决方案2
以单进程启动shard服务
1.使用数据目录启动一个独立的mongod ./mongod --dbpath /data/db
2.转储 ./mongodump --host=localhost --port=27017 --out=/tmp/dumps/1
3.从转储中恢复数据 ./mongorestore --host=localhost --port=27017 /tmp/dumps/1
. /mongorestore --host=localhost --port=27017 /tmp/dumps/1
4.启动一个空数据目录的shard服务,然后重新配置shard主从信息
./mongod -f /opt/mongodb/shard1.conf
config_shard={_id:'shard1',members:[{_id:0,host:'192.168.19.232:27017'}]};
rs.initiate(config_shard);
5.恢复数据
./mongorestore --host=localhost --port=27017 /tmp/dumps/1
6.配置mongos路由
./mongos -f /opt/mongodb/mongos/mongos.conf
db.runCommand({addshard:"shard1/192.168.19.232:27017",name:"shard1"});
7.shard查询恢复数据
8.monogs查询数据
显示异常信息
1.查看mongos和config的日志信息
2.停止所有的config进程和mongos进程 把config服务中的data目录,data目录中包含一些脏数据.需要全部删除
3.重启config和mongos
重新初始化config和mongos的分片信息
config主从初始化
./mongod -f /opt/mongodb/config/config.conf
config_cfgreplset={_id:'cfgreplset',configsvr:true,members:[{_id:0,host:'192.168.19.232:20000'},{_id:1,host:'192.168.19.232:20001'},{_id:2,host:'192.168.19.232:20002'}]}
rs.initiate(config_shard)
rs.reconfig(config_shard,{ "force": true });
shard主从初始化
./mongod -f /opt/mongodb/shard1.conf
config_shard={_id:'shard1',members:[{_id:0,host:'192.168.19.232:27017'}]};
rs.initiate(config_shard)
rs.reconfig(config_shard,{ "force": true });
mongos添加分片路由
./mongos -f /opt/mongodb/mongos/mongos.conf
db.runCommand({addshard:"shard1/192.168.19.232:27017",name:"shard1"});
mongod --repair --dbpath 数据目录
使用数据目录启动一个独立的mongod ./mongod --dbpath /data/db
转储 ./mongodump --host=localhost --port=27017 --out=/tmp/dumps/1
从转储中恢复数据 ./mongorestore --host=localhost --port=27017 /tmp/dumps/1
./mongorestore --host=localhost --port=27017 /tmp/dumps/1
单shard异常退出
shard进程接收到退出信号,自动进行了退出
添加一个shard进程做为从shard

shard1.conf port=28017 pidfilepath=/opt/mongodb/data/shard1.pid dbpath=/opt/mongodb/data/ logpath=/opt/mongodb/log/shard1.log logappend=true replSet=shard1 oplogSize=100 shardsvr=true storageEngine=wiredTiger directoryperdb=false bind_ip=0.0.0.0 vi mongos.conf port=37017 logpath=/opt/mongodb/mongos/logs/mongos.log logappend=true fork=true maxConns=1000 configdb=cfgreplset/192.168.19.252:20000,192.168.19.252:20001,192.168.19.252:20002 bind_ip=0.0.0.0
本文来自博客园,作者:不懂123,转载请注明原文链接:https://www.cnblogs.com/yxh168/p/17147019.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)