MongoDB分布式数据库的搭建

分片搭建

  1. 由于在一台机器上搭建mongo集群,计划搭建两个分片,我们为每个分片分配了三个节点,分别对应三个端口

    ​ 这个是分片的目录结构

1566529442047.png

​ 这个是分片的目录结构

  1. 分别为每个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] 为每个节点的配置文件

启动结果如下:

1566529260538.png
    我们可以看到27007、27008、27009三个端口分别启动了mongodb的服务

3.创建分片的副本集

​ 使用mongo -prot [port] 命令连接任意一台服务器

​ 注意: 如果不是在本地部署则需要加入-h [host] 指定主机名

​ [port]为指定服务器的端口号

1566530666924.png

连接成功之后我们就可以看到出现了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会返回建立副本集成功的消息,并选举出了一个主节点和从节点、还有一个备用节点

1566539984389.png

shard2的配置方法和shard1一直,重复之前操作即可

configserver搭建

​ configserver用于配置管理,里面存储了mongo分片中的元数据信息,mongos路由在查询数据时需

要先去找configserver了解数据对应存储在哪个分片上,然后再取shard分片中查询数据。

  1. configserver的服务同样使用三个服务来做一个集群,用到的端口是27018、20019、27020

    下面是cofigserver的文件结构

1566541842736.png
  1. 同样我们为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是会报错的

    1. 使用mongod -f 命令启动 configserver
1566543542614.png

开启了27018、27019、27020端口

  1. 然后使用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的字段

1566543958186.png

mongos配置

mongos在mongo分布式中起路由的作用,客户端需要查询数据直接连接到mongos就能查询数据。

mongos的集群这里不做搭建,我们只用一个mongos服务

  1. 配置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集群的地址
    
    
  2. 启动mongos服务

    使用mongos -f [path] 命令启动

    注意:mongos是一个专门的命令,用mongod打开是会报错的

1566545167486.png

可以看到27017端口运行了mongos服务

  1. 连接mongos服务,连接成功后发现mongo客户端命令行会出现mongos的字段

  2. 输入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"
    }) 
    
1566547043199.png

这样mongo的分布式就搭建完成了

我们可以在mongos上进行一些基本操作了。

补充

mongo服务器如果使用kill -9 [pid]命令会导致第二次启动失败。

可以使用mongo命令登录之后使用db.shutdown()命令关闭进程

你可能感兴趣的:(MongoDB分布式数据库的搭建)