Mongodb 删除添加分片与非分片表维护_MongoDB

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

一、如何移除分片

1、确认balancer已经开启

mongos> sh.getBalancerState()
true

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.
That shard becomes the primary shard for that database. (Different databases in a cluster can have different primary shards.)
WARNING
Do not perform this procedure until you have finished draining the shard.
1)To determine if the shard you are removing is the primary shard for any of the cluster's databases, issue one of the following methods:
sh.status()
db.printShardingStatus()
In the resulting document, the databases field lists each database and its primary shard.
For example, the following database field shows that the products database uses mongodb0 as the primary shard:
{ "_id" : "products", "partitioned" : true, "primary" : "mongodb0" }
2)To move a database to another shard, use the movePrimary command. For example, to migrate all remaining unsharded data from mongodb0 to mongodb1,
issue the following command:
use admin
db.runCommand( { movePrimary: "products", to: "mongodb1" }) --products为db name
This command does not return until MongoDB completes moving all data, which may take a long time.
The response from this command will resemble the following:
{ "primary" : "mongodb1", "ok" : 1 }
If you use the movePrimary command to move un-sharded collections, you must either restart all mongos instances,
or use the flushRouterConfig command on all mongos instances before writing any data to the cluster.
This action notifies the mongos of the new shard for the database.
If you do not update the mongos instances' metadata cache after using movePrimary, the mongos may not write data to the correct shard.
To recover, you must manually intervene.

根据上面所说,迁移非分片表 时 最好停机,在运行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()
true

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 删除添加分片与非分片表维护的全部叙述,希望对大家有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mongodb删除
, mongodb删除分片
mongodb删除表
mongodb维护、mongodb 删除数据、mongodb 删除数据库、mongodb 删除集合、mongodb误删除恢复,以便于您获取更多的相关知识。

时间: 2024-09-20 19:48:19

Mongodb 删除添加分片与非分片表维护_MongoDB的相关文章

MongoDB的分片集群基本配置教程_MongoDB

为何要分片1.减少单机请求数,降低单机负载,提高总负载 2.减少单机的存储空间,提高总存空间. 常见的mongodb sharding 服务器架构 要构建一个 MongoDB Sharding Cluster,需要三种角色:1.Shard Server即存储实际数据的分片,每个Shard可以是一个mongod实例,也可以是一组mongod实例构成的Replication Set.为了实现每个Shard内部的auto-failover(自动故障切换),MongoDB官方建议每个Shard为一组Re

搭建mongodb集群(副本集+分片)

搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集+分片)的例子... 准备四台机器,分别是bluejoe1,bluejoe2,bluejoe3,以及bluejoe0 副本集及分片策略确定如下:   将创建3个副本集,命名为shard1,shard2,shard3: 以上3个副本集作为3个分片: 每个副本集包含3个副本(主.辅1.辅2): 副本分开

mongodb删除集合后磁盘空间不释放

mongodb删除集合后磁盘空间不释放,只有用db.repairDatabase()去修复才能释放.  但是在修复的过程中如果出现了非正常的mongodb的挂掉,再次启动时启动不了的,需要先修复才可以, 可以利用./mongod --repair --dbpath=/data/mongo/ 如果你是把数据库单独的放在一个文件夹中指定dbpath时就指 向要修复的数据库就可以,修复可能要花费很长的时间,在使用db.repairDatabase()去修复时一定要停掉读写,并且 mongodb要有备机

Excel2007教程:删除一个不再需要的工作表

Excel2007基础教程:删除一个不再需要的工作表 如果不再需要一张工作表,或者想删除工作簿中的一个空工作表,那么可以通过两种方法来删除它: 右击表标签并从快捷菜单选择"删除飞 选择"开始" Q "单元格" Q "删除工作表" .如果工作表含有任何数据, Excel 会询问是否确认删除此表.如果该表从未被使用过, Excel 会不进行确认而立即删除它. 提示:只需同时选择要删除的表,就可以用一个简单的命令删除多个表. 按住Ctrl 键

Office2003 删除 COM 外接程序的注册表项

COM 加载项可以安装在任何位置.Word 安装 COM 添加宏与交互的程序中删除 COM 外接程序的注册表项,然后重新启动 Word (在典型的实现方法. 操作步骤: 若要删除 COM 外接程序的注册表项,请按照下列步骤操作: 退出所有 Office 程序. 双击桌面上的支持模板快捷方式. 在支持模板中,单击疑难解答工具. 在Microsoft Word 疑难解答实用程序对话框中, COM 外接程序的注册表项列表中单击选择一项,然后单击删除. 当您收到一条消息,将 HKEY_CURRENT_U

请教下用servlet实现对一个学生系统的登录查询删除添加等功能如何实现,急!!!!在线等待

问题描述 请教下用servlet实现对一个学生系统的登录查询删除添加等功能如何实现,要求不要牵涉数据库,如果是数据库我都会做. 解决方案 解决方案二:那就把数据放在一个静态变量中吧,简单点可用map<Integer,Po>,Po为映射数据库表字段的vo类.解决方案三:道理不是一样的吗,莫非用数据库的时候你是直接在页面上写的?解决方案四:查询我是做出来了.但在注册页面中的值如何添加到这个列表中去呢解决方案五:根据表单的字段,做一个vo(值对象)类,把这个类存进一个静态变量的list.set或ma

MongoDB快速入门笔记(六)之MongoDB删除文档操作_MongoDB

MongoDB是一个跨平台,面向文档的数据库,提供高性能,高可用性和易于扩展.MongoDB是工作在集合和文档上一种概念. 文档是一组键值对.文档具有动态模式.动态模式是指,在同一个集合的文件不必具有相同一组集合的文档字段或结构,并且相同的字段可以保持不同类型的数据. db.集合名称.remove({query}, justOne) query:过滤条件,可选 justOne:是否只删除查询到的第一条数据,值为true或者1时,只删除一条数据,默认为false,可选. 准备数据:把_id为1和2

过滤驱动禁止U盘读写(非注册表)

问题描述 过滤驱动禁止U盘读写(非注册表) 张帆的<Windows 驱动开发技术详解>中有一个U盘过滤驱动,实现U盘的只读锁定.我想在某种情况下实现U盘的读写锁定.因为我想做一个密码的判断,所以不可能手动对注册表修改来实现这个功能.运行实例代码是好的.但是我加了一个对读操作请求的处理,然后Windows7 32bit测试机立刻蓝屏.代码如下: NTSTATUS USBSCSICompletion( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN

Mysql非事务表回滚失败的现象

执行ROLLBACK(回滚)时,如果收到下述消息,表示事务中使用的1个或多个表不支持事务: 警告:某些更改的非事务性表不能被回滚. 这些非事务性表不受ROLLBACK语句的影响. 如果在事务中意外地混合了事务性表和非事务性表,导致该消息的最可能原因是,你认为本应是事务性的表实际上不是.如你试图使用MySQLd服务器不支持的事务性存储引擎(或用启动选项禁止了它)创建表,就可能出现该情况.如果mysqld不支持存储引擎,它将以MyISAM表创建表,这是非事务性表. 可使用下述语句之一检查表的标类型: