共计 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 问一下细节