在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 一、如何移除分片 1、确认balancer已经开启 mongos> sh.getBalancerState() 2、移除分片 注:在admin db下执行命令。 mongos> use admin switched to db admin mongos> db.runCommand( { removeShard: "shard3" } ) { "msg" : "draining started successfully", "state" : "started", "shard" : "shard3", "ok" : 1 } 3、检查迁移的状态 同样执行 mongos> use admin switched to db admin mongos> db.runCommand( { removeShard: "shard3" } ) { "msg" : "draining ongoing", "state" : "ongoing", "remaining" : { "chunks" : NumberLong(3), "dbs" : NumberLong(0) }, "ok" : 1 } remaining中的chunks表示还有多少数据块未迁移。 4、移除未分片数据 In a cluster, a database with unsharded collections stores those collections only on a single shard. 根据上面所说,迁移非分片表 时 最好停机,在运行db.runCommand( { movePrimary: "products", to: "mongodb1" }) 命令完成之后,刷新所有mongos后(所有mongos上运行db.runCommand("flushRouterConfig")),再对外提供服务。当然也可以重新启动所有mongos实例 。 5、完成迁移 mongos> use admin switched to db admin mongos> db.runCommand( { removeShard: "shard3" } ) { "msg" : "removeshard completed successfully", "state" : "completed", "shard" : "shard3", "ok" : 1 } 如果state为 completed,表示已完成迁移。 二、添加分片 1、首先确认balancer已经开启 mongos> sh.getBalancerState() 2、执行添加分片的命令 如果出现以下错误,删除目标shard3上的test1数据库,再次执行命令 mongos> sh.addShard("shard3/192.168.137.138:27019") { "ok" : 0, "errmsg" : "can't add shard shard3/192.168.137.138:27019 because a local database 'test1' exists in another shard1:shard1/192.168.137.111:27017,192.168.137.75:27017" } mongos> sh.addShard("shard3/192.168.137.138:27019") { "shardAdded" : "shard3", "ok" : 1 } 最后运行sh.status()命令确认迁移是否成功,可能会花比较长的时间。 以上内容是给大家介绍了Mongodb 删除添加分片与非分片表维护的全部叙述,希望对大家有所帮助。 |
请发表评论