Mongodb 删除添加分片与非分片表维护
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","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 删除添加分片与非分片表维护的全部叙述,希望对大家有所帮助。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |