MongoDB 3.4中怎么配置sharding分片

46次阅读
没有评论

共计 2860 个字符,预计需要花费 8 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章给大家介绍 MongoDB 3.4 中怎么配置 sharding 分片,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1.  创建配置服务副本集
创建数据目录,config 目录供配置服务使用,shard 目录供分片数据节点使用
[root@MySQL01 ~]# su – mongo
[mongo@MySQL01 ~]$ cd /data/db
[mongo@MySQL01 db]$ mkdir config01
[mongo@MySQL01 db]$ mkdir config02
[mongo@MySQL01 db]$ mkdir config03
[mongo@MySQL01 db]$ mkdir shard01
[mongo@MySQL01 db]$ mkdir shard02
[mongo@MySQL01 db]$ mkdir shard03

启动配置服务副本集的每个节点
[mongo@MySQL01 ~]$ mongod –configsvr –replSet fire –dbpath /data/db/config01 –port 10001

[mongo@MySQL01 ~]$ mongod –configsvr –replSet fire –dbpath /data/db/config02 –port 10002

[mongo@MySQL01 ~]$ mongod –configsvr –replSet fire –dbpath /data/db/config03 –port 10003

连接到配置服务器,执行初始化操作
[mongo@MySQL01 ~]$ mongo localhost:10001
MongoDB shell version v3.4.10
connecting to: localhost:10001
MongoDB server version: 3.4.10

rs.initiate(
…   {
…     _id: fire ,
…     configsvr: true,
…     members: [
…       {_id : 0, host : MySQL01:10001},
…       {_id : 1, host : MySQL01:10002},
…       {_id : 2, host : MySQL01:10003}
…     ]
…   }
… )
{ok : 1}
fire:SECONDARY exit
bye

2. 创建分片副本集
启动副本集的每个节点
[mongo@MySQL01 ~]$ mongod –shardsvr –replSet flame –port 20001 –dbpath /data/db/shard01

[mongo@MySQL01 ~]$ mongod –shardsvr –replSet flame –port 20002 –dbpath /data/db/shard02

[mongo@MySQL01 ~]$ mongod –shardsvr –replSet flame –port 20003 –dbpath /data/db/shard03

连接到分片副本集的一个节点,执行副本集初始化操作
[mongo@MySQL01 ~]$ mongo localhost:20001
MongoDB shell version v3.4.10
connecting to: localhost:20001
MongoDB server version: 3.4.10
rs.initiate(
…   {
…     _id : flame ,
…     members: [
…       {_id : 0, host : MySQL01:20001},
…       {_id : 1, host : MySQL01:20002},
…       {_id : 2, host : MySQL01:20003}
…     ]
…   }
… )
{ok : 1}
flame:OTHER exit
bye

3. 通过 mongos 连接到分片集群
[mongo@MySQL01 ~]$ mongos –configdb fire/MySQL01:10001,MySQL01:10002,MySQL01:10003 –port 30000

4. 增加分片到集群
连接到 mongos,增加上面创建的副本集到集群中
[mongo@MySQL01 ~]$ mongo localhost:30000
MongoDB shell version v3.4.10
connecting to: localhost:30000
MongoDB server version: 3.4.10

mongos sh.addShard(flame/MySQL01:40001)
{shardAdded : flame , ok : 1}

开启指定数据库的分片

为 sale 数据库开启分片功能
mongos sh.enableSharding(sale)
{ok : 1}

在 sale 数据库里面创建一个集合
mongos use sale
switched to db sale
mongos  
mongos show collections
mongos db.dept.insert({id :10})
WriteResult({nInserted : 1})
mongos db.dept.insert({id :20})
WriteResult({nInserted : 1})
mongos db.dept.insert({id :30})
WriteResult({nInserted : 1})

为创建好的集合执行范围分片
mongos sh.shardCollection(sale.dept , { id : 1} )
{
proposedKey : {
id : 1
},
curIndexes : [
{
v : 2,
key : {
_id : 1
},
name : _id_ ,
ns : sale.dept
}
],
ok : 0,
errmsg : please create an index that starts with the shard key before sharding.
}

发生报错,需要对集合的分片字段创建索引
mongos db.dept.ensureIndex({id : 1})
{
raw : {
flame/MySQL01:20001,MySQL01:20002,MySQL01:20003 : {
createdCollectionAutomatically : false,
numIndexesBefore : 1,
numIndexesAfter : 2,
ok : 1,
$gleStats : {
lastOpTime : {
ts : Timestamp(1512224813, 1),
t : NumberLong(1)
},
electionId : ObjectId(7fffffff0000000000000001)
}
}
},
ok : 1
}

对集合执行分片
mongos sh.shardCollection(sale.dept , { id : 1} )
{collectionsharded : sale.dept , ok : 1}

关于 MongoDB 3.4 中怎么配置 sharding 分片就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2860字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)