代码改变世界

MongoDB分片集群还原

  abce  阅读(1447)  评论(0编辑  收藏  举报

从mongodb 3.0开始,mongorestore还原的时候,需要一个运行着的实例。早期的版本没有这个要求。

1.为每个分片部署一个复制集

(1)复制集中的每个成员启动一个mongod

1
2
3
4
5
mongod --dbpath /mdb/data/s11 --logpath /mdb/mlog/s11.log --fork --port 27017 --replSet s1 --smallfiles &
mongod --dbpath /mdb/data/s12 --logpath /mdb/mlog/s12.log --fork --port 27018 --replSet s1 --smallfiles &
 
mongod --dbpath /mdb/data/s21 --logpath /mdb/mlog/s21.log --fork --port 27019 --replSet s2 --smallfiles &
mongod --dbpath /mdb/data/s22 --logpath /mdb/mlog/s22.log --fork --port 27020 --replSet s2 --smallfiles &

(2)通过mongo连接到实例,运行:

1
2
3
mongo --port=27017
>rs.initiate()
>rs.add("11.11.11.195:27018")
1
2
3
mongo --port=27019
>rs.initiate()
>rs.add("11.11.11.195:27020")

 

2.部署config服务器

1
mongod --dbpath /mdb/data/sc --logpath /mdb/mlog/sc.log --fork --port 27021 --configsvr  &

 

3.启动mongos实例

1
mongos --logpath /mdb/mlog/ss.log --fork --port 30000 --configdb 11.11.11.195:27021

 

4.集群添加分片

1
2
3
4
5
6
登陆路由器
./mongo --port 30000
 
增加片节点
sh.addShard("s1/11.11.11.195:27018")
sh.addShard("s2/11.11.11.195:27020")

 

5.关闭mongos instances
分片集群启动后,关闭mongos实例

 

6.还原分片数据

1
mongorestore --drop /mdb/bin/s1 --port 27017

 

1
mongorestore --drop /mdb/bin/s2 --port 27019

 

然后关闭所有分片实例

 

7.还原config server数据

1
mongorestore --drop /mdb/bin/config_server --port 27021

 

8.启动mongos instance

1
mongos --logpath /mdb/mlog/ss.log --fork --port 30000 --configdb 11.11.11.195:27021

 

9.如果shard的主机名发生了变化,需要更新config数据库

1
2
3
4
5
6
7
8
9
mongos> db.shards.find()
{ "_id" : "s1", "host" : "s1/genome_svr1:27501,genome_svr2:27502,genome_svr2:27503" }
{ "_id" : "s2", "host" : "s2/genome_svr4:27601,genome_svr5:27602,genome_svr5:27603" }
mongos> db.shards.update( { "_id": "s1" }, { $set: { "host": "s1/11.11.11.195:27017,11.11.11.195:27018" } }, { multi: true })
mongos> db.shards.update( { "_id": "s2" }, { $set: { "host": "s2/11.11.11.195:27019,11.11.11.195:27020" } }, { multi: true })
mongos> db.shards.find()db.shards.find()
{ "_id" : "s1", "host" : "s1/11.11.11.195:27018,11.11.11.195:27017" }
{ "_id" : "s2", "host" : "s2/11.11.11.195:27020,11.11.11.195:27019" }
mongos>

 

10.重启所有的shard mongod实例


11.重启其它的mongos实例

 

12.验证集群环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
mongos> db.printShardingStatus()
--- Sharding Status ---
  sharding version: {
        "_id" : 1,
        "minCompatibleVersion" : 5,
        "currentVersion" : 6,
        "clusterId" : ObjectId("553f0cc819d7841961ac8f4b")
}
  shards:
        "_id" : "s1""host" : "s1/11.11.11.195:27018,11.11.11.195:27017" }
        "_id" : "s2""host" : "s2/11.11.11.195:27020,11.11.11.195:27019" }
  balancer:
        Currently enabled:  yes
        Currently running:  no
        Failed balancer rounds in last 5 attempts:  0
        Migration Results for the last 24 hours:
                No recent migrations
  databases:
        "_id" : "admin""partitioned" : false"primary" : "config" }
        "_id" : "snps""partitioned" : true"primary" : "s1" }
                snps.elegans
                        shard key: { "snp" : 1 }
                        chunks:
                                s1      1
                                s2      1
                        { "snp" : { "$minKey" : 1 } } -->> { "snp" : "haw100000" } on : s2 Timestamp(2, 0)
                        { "snp" : "haw100000" } -->> { "snp" : { "$maxKey" : 1 } } on : s1 Timestamp(2, 1)
        "_id" : "test""partitioned" : false"primary" : "s1" }
 
mongos>

 

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示