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
把mongodb集群中的数据恢复到单机模式表
单表备份 /data/mongodb-linux-x86_64-rhel70-4.0.28/bin/mongodump -h 192.168.0.182:20002 -uadmin -pTransfar2022 --authenticationDatabase admin -d mydb -c mobile_portal_asset_info -o /data/mongodatabak/ /data/mongodb-linux-x86_64-rhel70-4.0.28/bin/mongodump -h 192.168.0.17:20003 -uadmin -pTransfar2022 --authenticationDatabase admin -d mydb -c mobile_portal_asset_info -o /data/mongodatabak/ /data/mongodb-linux-x86_64-rhel70-4.0.28/bin/mongodump -h 192.168.0.205:20001 -uadmin -pTransfar2022 --authenticationDatabase admin -d mydb -c mobile_portal_asset_info -o /data/mongodatabak/ 单表恢复 cd /data/mongodatabak /data/mongodb-linux-x86_64-rhel70-4.0.28/bin/mongorestore -h 127.0.0.1:27017 -u admin -p Transfar2022 --authenticationDatabase admin --db mydb --collection mobile_portal_asset_info /data/mongodatabak/mydb/mobile_portal_asset_info.bson 查看最新数据 db.getCollectionNames().includes("mobile_portal_asset_info") db.mobile_portal_asset_info.countDocuments({})


把三个分片中的数据分批导入到一个新的表中,保证数据完整
本文来自博客园,作者:不懂123,转载请注明原文链接:https://www.cnblogs.com/yxh168/p/17147019.html
浙公网安备 33010602011771号