mongodb集群搭建(主从-shard集群)

一.主从搭建

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

 

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

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

 

查看集群命令

 

现在我们需要添加一个配置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)

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

   rs.status()

 

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

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

   bind_ip=0.0.0.0   #切记如果不是在同一台机器上,不配置的话分片会报错
   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

   bind_ip=0.0.0.0   #切记如果不是在同一台机器上,不配置的话分片会报错   

启动shard1 shard2        ./bin/mongod -f ./config/shard2-47017.conf

 

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

 

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

 

进入到route节点配置 shard节点

为数据库开启分片功能

 

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

 

查看分片状态

 

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

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

 

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

添加数据测试:

查看数据

到此分片集群搭建完毕。

 

 

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

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

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

尝试插入32183万条数据

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

sh.status()

 

 

查看数据库数据

可以修改 shard分区大小

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

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_36260963/article/details/86571255