MongoDB分片

MongoDB分片

MongoDB 集群部署形态。mongos起到路由功能,功能供程序连接。在启动时从配置服务器加载集群信息,开启mongos进程需要知道配置服务器的地址,指定configdb选项。cs保存集群和分片的元数据。即各分片(shard)包含哪些数据信息等。Shard是存储了集合部分数据的MongoDB实例。其工作模式大致是应用程序通过mongos路由到cs中取元数据,然后通过元数据到shard中取数据并返回。如下图:

                 

 

 

 

若此过程中cs节点发生变化,如某节点宕机,添加节点或发生迁移时等情况下,理想情况下应该修改mongos的sharding.configdb参数,因为极端状态下,如cs节点完全迁移,则会导致mongos连接不上cs节点。所以在cs节点发生迁移的情况下,需要修改mongos的configdb选项。

 

三个组件:

  • mongos:

  前端路由,客户端由此接入,且让整个集群看上去像单个数据库。

  • CS(Config Server):

  mongod实例,存储了整个ClusterMetadata,其中包括chunk信息。

  • Shard:

  用于存储实际的数据。它由几台机器组成的replica set(副本集)承担。

设置分片

> use admin
> db.runCommand({ addshard: 'rs0/localhost:27020,localhost:27021'})
> db.runCommand({ addshard: 'rs1/localhost:27030,localhost:27031'})
> db.runCommand({ enablesharding: 'test'})
> db.runCommand({ shardcollection: 'test.user', key: {name: 1}})

项目中在执行shardcollection报了”casesharding already enabled for collection testdb.table2”,原因是该步骤没有实现幂等,cs库中已经存在该表的信息。

具体解决方法可参考我的博文: MongoDB报"sharding already enabled for collection xxx"的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值