MongoDB的分片

Shard key:
1.每个需要分片的集合都需要指定分片键;
2.分片键必须是索引字段或者复合索引的左前缀;
3.根据分片键将数据分成多个块,并将他们平均分布在多个shards节点上;
4.支持两种分区算法:range和hash

搭建分片集群

准备10个节点:

          1个路由router;

          3个节点组成复制集作为配置服务器config server;

          3个节点组成复制集作为分片1;

          3个节点组成复制集作为分片2。

最后的文件形式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分片节点数据文件存放目录

在这里插入图片描述

Config server节点目录以及一个router节点目录
在这里插入图片描述
分别对shard1,shard2,config_server以及router创建日志文件
在这里插入图片描述
单独创建一个分片集群的进程信息目录
在这里插入图片描述
创建节点配置文件存放目录,对分片1的复制集中三个节点编辑配置文件信息(端口号记得不同)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置文件其中一个:

dbpath=/Users/haoniao/code/Nosql/mongodb/data/cluster/shard1/s1
logpath=/Users/haoniao/code/Nosql/mongodb/data/logs/cluster_logs/shard1_s1.log
logappend=true
bind_ip_all=true
port=27217
fork=true
replSet=shard1
pidfilepath=/Users/haoniao/code/Nosql/mongodb/pids/cluster_poids/shard1_s1.pid
oplogSize=1000
shardsvr=true

对分片2的复制集中三个节点编辑配置文件信息
在这里插入图片描述
在这里插入图片描述

dbpath=/Users/haoniao/code/Nosql/mongodb/data/cluster/shard2/s1
logpath=/Users/haoniao/code/Nosql/mongodb/data/logs/cluster_logs/shard2_s1.log
logappend=true
bind_ip_all=true
port=27317
fork=true
replSet=shard2
pidfilepath=/Users/haoniao/code/Nosql/mongodb/pids/cluster_poids/shard2_s1.pid
oplogSize=1000
shardsvr=true

启动两个分片共6个节点的mongod服务

//先到MongoDB的根目录
 bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/cluster_conf/shard1_s1.conf
 bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/cluster_conf/shard1_s2.conf
 bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/cluster_conf/shard1_s3.conf
 bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/cluster_conf/shard2_s1.conf
bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/cluster_conf/shard2_s2.conf
bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/cluster_conf/shard2_s3.conf

查看是否启动:
ps -ef|grep mongod
在这里插入图片描述
户端连接share1分片中其中一个节点,并做初始化
在这里插入图片描述

rs.initiate({
	"_id":"replicatios",
	"members":[
		{"_id":0,"host":"127.0.0.1:27217","priority":3},
		{"_id":1,"host":"127.0.0.1:27218","priority":1},
		{"_id":3,"host":"127.0.0.1:27219","arbiterOnly":true},

	]	
});

当前分片1中端口为27217的服务为主机服务(查看一下):
在这里插入图片描述
客户端连接share2分片中其中一个节点,并做初始化
在这里插入图片描述

rs.initiate({
	"_id":"shard1",
	"members":[
		{"_id":0,"host":"127.0.0.1:27217","priority":3},
		{"_id":1,"host":"127.0.0.1:27218","priority":1},
		{"_id":3,"host":"127.0.0.1:27219","arbiterOnly":true},

	]	
});

当前分片2中端口为27317的服务为主机服务
在这里插入图片描述

rs.initiate({
	"_id":"shard2",
	"members":[
		{"_id":0,"host":"127.0.0.1:27317","priority":3},
		{"_id":1,"host":"127.0.0.1:27318","priority":1},
		{"_id":3,"host":"127.0.0.1:27319","arbiterOnly":true},

	]	
});

对config_server的复制集中三个节点编辑配置文件信息
在这里插入图片描述
在这里插入图片描述
configsvr=true 这里和上面不同

dbpath=/Users/haoniao/code/Nosql/mongodb/data/cluster/config_s/c1
logpath=/Users/haoniao/code/Nosql/mongodb/data/logs/cluster_logs/config_s1.log
logappend=true
bind_ip_all=true
port=27417
fork=true
replSet=config_server
pidfilepath=/Users/haoniao/code/Nosql/mongodb/pids/cluster_poids/config1.pid
oplogSize=1000
configsvr=true

分别启动config_server中的三个节点的mongodb服务

bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/cluster_conf/config_server_c1.conf
 bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/cluster_conf/config_server_c2.conf
 bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/cluster_conf/config_server_c3.confd

在这里插入图片描述
客户端连接其中一个节点的mongodb服务,并初始化
在这里插入图片描述

rs.initiate({
	"_id":"config_server",
	"members":[
		{"_id":0,"host":"127.0.0.1:27417","priority":3},
		{"_id":1,"host":"127.0.0.1:27418","priority":1},
		{"_id":3,"host":"127.0.0.1:27419","priority":1},

	]	
});

端口为27417的mongodb服务为主机
在这里插入图片描述
配置路由
在这里插入图片描述
在这里插入图片描述

logpath=/Users/haoniao/code/Nosql/mongodb/data/logs/cluster_logs/router.log
logappend=true
bind_ip_all=true
port=27517
fork=true
pidfilepath=/Users/haoniao/code/Nosql/mongodb/pids/cluster_poids/router.pid
configdb=config_server/127.0.0.1:27417,127.0.0.1:27418,127.0.0.1:27419

启动mongos服务
在这里插入图片描述
在这里插入图片描述
客户端连接
在这里插入图片描述
先切换到admin库,然后将两个分片添加到路由
在这里插入图片描述
在config库的shards集合下能看到分片信息
在这里插入图片描述
给指定的数据库开启分片能力,开启分片命令必须在admin库下运行
在这里插入图片描述
在开启分片能力的库中创建一个集合
在这里插入图片描述
分片键所在的字段必须要有索引
在这里插入图片描述
5.0以上用的这个,之前的ensureIndex 已经不用了

db.users.createIndex({"name":1,"age":1})

对集合开启分片,在此之前需要先对集合中的分片字段建立索引
先到admin ,
use admin
在这里插入图片描述
查看分片的状态信息
sh.status()
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值