一.主从搭建

1.我在两台机器上操作(172.30.50.179,180  )

1.cd /usr/local/app/mongodb-4.0.5

2.mkdir -p data/{37017,37018}

3.mkdir -p config log

4.添加配置文件  

vim config/config1-37017.conf    180的机器

dbpath=/usr/local/app/mongodb-4.0.5/data/37017   #数据存储路径
   port=37017    #端口号
   fork=true        #是否后台启动
   logpath=/usr/local/app/mongodb-4.0.5/log/config1-37017.log  #日志文件目录
   logappend=true       #重启后日志是否追加
   bind_ip=0.0.0.0       #是否限制IP使用 0.0.0.0(代表不限制ip使用)
   replSet=shardCluster #集群名称
   #configsvr=true   #是否是一个配置集群-注意:此处为主从则该节点不配置,如果为shard分片集群则打开,切记

 vim config/config2-37018.conf

dbpath=/usr/local/app/mongodb-4.0.5/data/37018   #数据存储路径
   port=37018    #端口号
   fork=true        #是否后台启动
   logpath=/usr/local/app/mongodb-4.0.5/log/config2-37018.log  #日志文件目录
   logappend=true       #重启后日志是否追加
   bind_ip=0.0.0.0       #是否限制IP使用 0.0.0.0(代表不限制ip使用)
   replSet=shardCluster #集群名称
   configsvr=true   #是否是一个配置集群 -注意:此处为主从则该节点不配置,如果为shard分片集群则打开,切记

分别启动 config2-37018.conf  config1-37017.conf  配置文件

./bin/mongod -config ./config   config2-37018.conf

./bin/mongod -config ./config   config1-37017.conf 

启动完成后    netstat -nutlp


mongodb 集群模式 oplog mongo集群搭建_数据

 

 

2.179的机器上配置 跟上面步骤一样

vim config/config3-37019.conf

dbpath=/usr/local/app/mongodb-4.0.5/data/37019   #数据存储路径
   port=37019    #端口号
   fork=true        #是否后台启动
   logpath=/usr/local/app/mongodb-4.0.5/log/config3-37019.log  #日志文件目录
   logappend=true       #重启后日志是否追加
   bind_ip=0.0.0.0       #是否限制IP使用 0.0.0.0(代表不限制ip使用)
   replSet=shardCluster #集群名称
   configsvr=true   #是否是一个配置集群 注意:此处为主从则该节点不配置,如果为shard分片集群则打开,切记

启动   ./bin/mongod -config ./config/config3-37019.conf

mongodb 集群模式 oplog mongo集群搭建_重启_02

 

进入到mongo 的客户端  ./bin/mongo --host 172.30.43.179 --host 37019

 

mongodb 集群模式 oplog mongo集群搭建_数据_03

查看集群命令

 

mongodb 集群模式 oplog mongo集群搭建_重启_04

现在我们需要添加一个配置js脚本,将节点添加进去 

声明配置变量

var cfg1 ={
     _id:"shardCluster",
     protocolVersion : 1,
         members:[
         {_id:0,host:"172.30.43.179:37019"},   #此处一定要写ip不能为localhost  或者127.0.0.1 否则会报错
         {_id:1,host:"172.30.43.180:37017"},
         {_id:2,host:"172.30.43.180:37018"},
         ]
 }

 

// 初始化配置

   rs.initiate(cfg1)

mongodb 集群模式 oplog mongo集群搭建_mongodb 集群模式 oplog_05

 

// 查看集群状态   需要闪等一下 primary节点才能出来

   rs.status()

mongodb 集群模式 oplog mongo集群搭建_数据_06

 

#向集群中添加数据,主节点添加

user lq

db.emp.insert(.....)

进入到从节点 只需要切换端口就行

默认节点下从节点不能读取数据;解决办法  rs.slaveOk() 

 

可以尝试kill 主节点,看从节点是否自动切换。

 

 

 

二,mongodb 中的分片架构

 1.三个配置节点  172.30.43.180:37019  172.30.43.179:37017  172.30.43.179:37018 配置文件就是上面三个文件  

 2.配置两个shard集点集群   172.30.43.180:47017    172.30.43.179:47017 

#179机器
   dbpath=/usr/local/app/mongodb-4.0.5/data/shard1
    port=47017#切记如果不是在同一台机器上,不配置的话分片会报错
    fork=true
    logpath=/usr/local/app/mongodb-4.0.5/log/shard1-47017.log
    shardsvr=true 
#180机器
   dbpath=/usr/local/app/mongodb-4.0.5/data/shard2
    port=47017
    fork=true
    logpath=/usr/local/app/mongodb-4.0.5/log/shard2-47017.log
    shardsvr=true#切记如果不是在同一台机器上,不配置的话分片会报错   
启动shard1 shard2        ./bin/mongod -f ./config/shard2-47017.conf


mongodb 集群模式 oplog mongo集群搭建_mongodb 集群模式 oplog_07

mongodb 集群模式 oplog mongo集群搭建_mongodb_08

 

报错信息: 这就是shard 中的bind_ip=0.0.0.0 没有配置

mongodb 集群模式 oplog mongo集群搭建_数据_09

 

3.配置信息 配置一个路由节点 roture 172.30.43.179:27017 

port=27017
  bind_ip=0.0.0.0
  fork=true
  logpath=/usr/local/app/mongodb-4.0.5/log/route.log
  configdb=shardCluster/172.30.43.180:37017,172.30.43.180:37018,172.30.43.179:37019

 启动 路由节点 mongos :./bin/mongos -f ./config/route-27017.conf

mongodb 集群模式 oplog mongo集群搭建_mongodb集群搭建_10

 

进入到route节点配置 shard节点

mongodb 集群模式 oplog mongo集群搭建_mongodb集群搭建_11

为数据库开启分片功能

mongodb 集群模式 oplog mongo集群搭建_重启_12

 

添加分片  sh.addShard("172.30.43.179:47017")     sh.addShard("172.30.43.180:47017")   

mongodb 集群模式 oplog mongo集群搭建_数据_13

 

查看分片状态

mongodb 集群模式 oplog mongo集群搭建_数据_14

 

目前看到的只是一个分区信息  原因是因为数据默认为 64M

1.为数据库开启分片功能   sh.enableSharding("shardCluster")

mongodb 集群模式 oplog mongo集群搭建_重启_15

 

为指定集合开启分片功能   sh.shardCollection("shardCluster.pressure",{"_id":1})

添加数据测试:

mongodb 集群模式 oplog mongo集群搭建_重启_16

查看数据

mongodb 集群模式 oplog mongo集群搭建_mongodb_17

到此分片集群搭建完毕。

 

 

================================================================================================

以下为测试分区,可以不用看

修改分片大小 ,目前只看到第一个分区有数据,现在修改分区1的大小

mongodb 集群模式 oplog mongo集群搭建_重启_18

尝试插入32183万条数据

 添加数据库脚本
         for (var i = 0; i < 32183;i++){
            db.pressure.insert({_id:i,name:"刘"+i,phone:1881221344+i})
            }

mongodb 集群模式 oplog mongo集群搭建_mongodb集群搭建_19

sh.status()

 

 

mongodb 集群模式 oplog mongo集群搭建_mongodb 集群模式 oplog_20

查看数据库数据

mongodb 集群模式 oplog mongo集群搭建_数据_21

可以修改 shard分区大小

mongodb 集群模式 oplog mongo集群搭建_mongodb_22

至此,两个分区都有数据了。 完结。。。不足之处还望指出