分片搭建
-
由于在一台机器上搭建mongo集群,计划搭建两个分片,我们为每个分片分配了三个节点,分别对应三个端口
这个是分片的目录结构
这个是分片的目录结构
- 分别为每个node配置conf文件
文件配置内容如下
replSet=shard1 //指定副本集名
shardsvr = true //指定该服务为分片服务
logpath=/home/bertzhou/mongo-colony/shards/shards1/node1/node1.log //日志存放地址
logappend=true //日志追加
fork=true //作为后台进程开启
port=27007 //指定服务监听端口
dbpath=/home/bertzhou/mongo-colony/shards/shards1/node1 //数据库地址
pidfilepath=/home/bertzhou/mongo-colony/shards/shards1/node1/node1.pid //pid文件存放地址
配置完成后我们使用mongod -f [path] 命令分别启动三个节点
[path] 为每个节点的配置文件
启动结果如下:
我们可以看到27007、27008、27009三个端口分别启动了mongodb的服务
3.创建分片的副本集
使用mongo -prot [port] 命令连接任意一台服务器
注意: 如果不是在本地部署则需要加入-h [host] 指定主机名
[port]为指定服务器的端口号
连接成功之后我们就可以看到出现了mongo命令行的界面
然后在mongo命令行中输入分片副本集的配置命令是
var rsconf={ //定义一个变量来存放副本级结构
_id:"shard1", //副本级的名字 要和节点配置文件conf中的replSet中的名字相同
members:
[
{
_id:1, //服务器编号
host:"127.0.0.1:27010" //服务器地址
},
{
_id:2,
host:"127.0.0.1:27011"
},
{
_id:3,
host:"127.0.0.1:27012"
}
]
}
rs.initiate(rsconf)
配置副本集成功之后我们可以看到mongo会返回建立副本集成功的消息,并选举出了一个主节点和从节点、还有一个备用节点
shard2的配置方法和shard1一直,重复之前操作即可
configserver搭建
configserver用于配置管理,里面存储了mongo分片中的元数据信息,mongos路由在查询数据时需
要先去找configserver了解数据对应存储在哪个分片上,然后再取shard分片中查询数据。
-
configserver的服务同样使用三个服务来做一个集群,用到的端口是27018、20019、27020
下面是cofigserver的文件结构
-
同样我们为configserver添加配置文件
配置文件如下
systemLog: destination: file logAppend: true path: "/home/bertzhou/mongo-colony/config-servers/node1/node1.log" storage: dbPath: "/home/bertzhou/mongo-colony/config-servers/node1" journal: enabled: true processManagement: fork: true net: port: 27018 bindIp: 127.0.0.1 replication: replSetName: config-servers sharding: clusterRole: configsvr
这里的配置文件为yaml格式的配置文件,mongo4.0之后开始使用yaml格式的配置文件,当然也兼
容之前的写法。注意:yaml格式的文件有严格的格式,如果是子字段的话需要2个空格缩进,使用t
ab是会报错的
- 使用mongod -f 命令启动 configserver
开启了27018、27019、27020端口
- 然后使用mongo连接任意的configserver数据库
输入配置副本集命令,建立集群
rs.initiate(
{
_id:"config-servers", //这里的id是conf文件中配置的replSetName
configsvr:true,
members:[
{_id:0,host:"127.0.0.1:27018"},
{_id:1,host:"127.0.0.1:27019"},
{_id:2,host:"127.0.0.1:27020"},
]
}
)
完成之后就可以看到命令行中出现了primary 或者是secondary的字段
mongos配置
mongos在mongo分布式中起路由的作用,客户端需要查询数据直接连接到mongos就能查询数据。
mongos的集群这里不做搭建,我们只用一个mongos服务
-
配置mongos的conf
1. systemLog: destination: file logAppend: true path: /home/bertzhou/mongo-colony/mongos/mongos.log processManagement: fork: true net: port: 27017 bindIp: 127.0.0.1 sharding: configDB: config-servers/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020 //这里需要配置configserver集群的地址
-
启动mongos服务
使用mongos -f [path] 命令启动
注意:mongos是一个专门的命令,用mongod打开是会报错的
可以看到27017端口运行了mongos服务
连接mongos服务,连接成功后发现mongo客户端命令行会出现mongos的字段
-
输入shards的配置命令,为mongos添加分片集群
在mongos中切换admin数据库,然后添加命令
db.runCommand({ addshard: "shard1/127.0.0.1:27007,127.0.0.1:27008,127.0.0.1:27009",name:"shard1" }) db.runCommand({ addshard: "shard2/127.0.0.1:27010,127.0.0.1:27011,127.0.0.1:27012",name:"shard2" })
这样mongo的分布式就搭建完成了
我们可以在mongos上进行一些基本操作了。
补充
mongo服务器如果使用kill -9 [pid]命令会导致第二次启动失败。
可以使用mongo命令登录之后使用db.shutdown()命令关闭进程