Mongodb集群扩容方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_15411661/article/details/83414038

1 系统说明

       源组件如下:

组件及版本

组件功能

引入原因

Mongodb3.6.2

提供高性能的文件式数据存储和检索的分布式平台

提供结构化模型数据的持久化和检索功能

 

 

2 集群扩容

2.1 单机扩容到2个分片

2.1.1 扩容前状态

1.原有的场景为mongodb只有一个副本集,没有运行任何的配置进程mongocfg和控制进程mongos。

2.当从1个节点扩容到2个节点的时候,整个mongodb集群从原先的单个副本集扩展到了分片集群。因此在添加分片的基础上,还需要额外添加配置集群mongocfg的副本集和控制节点mongos。

2.1.2 扩容步骤

1.启动新增分片的副本集

vi ./config/primary.conf

红框处改为新IP

./bin/mongod -f ./config/primary.conf       //启动主节点

 

vi ./config/secondary.conf

红框处改为新IP

./bin/mongod -f ./config/secondary.conf    //启动副本节点

 

vi ./config/arbiterOnly.conf

红框处改为新IP

./bin/mongod -f ./config/arbiter.conf          //启动选举节点

 

2.配置副本集

./bin/mongo IP:27017  //进入主节点,IP为具体IP

config = {_id:"shard1", members: [

           {_id: 0, host:"IP:27017", priority:10},

           {_id: 1, host:"IP:27018", priority:8},

           {_id: 2, host:"IP:27019","arbiterOnly":true}]

        };

    rs.initiate(config)     //初始化副本集

 

注:单节点扩容与直接创建两分片集群不同之处在于单节点已有数据,操作者可在此时添加数据模拟实际情况。

 

4.启动config节点

vi ./config/configsvr.conf

 

红框处改为config副本集实际IP

./bin/mongod -f ./config/configsvr.conf   //config节点个数必须大于等于2个

登录另一台服务器

vi ./config/configsvr.conf

红框处改为config副本集实实际IP

./bin/mongod -f ./config/configsvr.conf

5.配置config节点为副本集

./bin/mongo IP:20000    //IP为实际IP

configSvr = {_id:"configSvr",

                  configsvr:true,

                  members: [

           {_id: 0, host:"IP1:20000",priority:10},

           {_id: 1, host:"IP2:20000",priority:8}]

        };

    rs.initiate(config)     //初始化副本集

 

6.启动mongos节点

vi config/mongos.conf

第一个红框为config节点IP,第二个红框为mongos服务所在服务器IP  

./bin/mongos -f ./config/mongos.conf   

7.添加分片

./bin/mongo IP:30000    //IP为实际IP

use admin

db.runCommand({addshard:"shard1/IP1:27017,IP1:27018,IP1:27019"})

db.runCommand({addshard:"shard2/IP1:27017,IP2:27018,IP2:27019"})

db.runCommand({listShards:1})

sh.startBalancer()

sh.enableSharding("test")

 

以下部分脚本中不需要包含,只需要执行到第7步

8.初始化索引

./bin/mongo IP:30000

use face

db.static_human.createIndex({"_id":1})

db.static_human.ensureIndex({"_id":"hashed"})  //此为关键步骤

sh.shardCollection("face.static_human", {"_id":"hashed"})

 

    1.  2分片扩容到3分片
  1. 启动第三个副本[金月姣1] 

vi ./config/primary.conf

红框处改为新IP

./bin/mongod -f ./config/primary.conf       //启动主节点

 

vi ./config/secondary.conf

红框处改为新IP

./bin/mongod -f ./config/secondary.conf    //启动副本节点

 

vi ./config/arbiterOnly.conf

红框处改为新IP

./bin/mongod -f ./config/arbiter.conf          //启动选举节点

      

  1. 配置第三个副本集

/bin/mongo IP:27017  //进入主节点,IP为第二台服务器IP

config = {_id:"shard3", members: [

           {_id: 0, host:"IP3:27017", priority:10},

           {_id: 1, host:"IP3:27018", priority:8},

           {_id: 2, host:"IP3:27019","arbiterOnly":true}]

        };

    rs.initiate(config)     //初始化副本集

  1. 添加分片

./bin/mongo IP:30000    //IP为实际IP

use admin

db.runCommand({addshard:"shard3/IP3:27017,IP3:27018,IP3:27019"})

 

  1. 新增mongocfg

vi ./config/configsvr.conf

第一个红框处改为新IP,第二个红框为前两个mongocfg节点IP

./bin/mongod -f ./config/configsvr.conf              //启动config节点

 

./bin/mongo IP3:20000  //进入config节点shell

 

configSvr = {_id:"configSvr",

configsvr:true,

              members: [

                   {_id: 0, host:"10.41.11.51:20000",priority:10},

                   {_id: 1, host:"10.41.11.52:20000",priority:8},

                   {_id: 2, host:"10.41.11.53:20000"}]

};    //副本集增加新增的mongocfg

 

rs.reconfig(configSvr, {force: true})   //更新配置

 

  1. 更改第一个mongos配置

在IP1的服务器上执行

killall mongos

vi config/mongos.conf  //打开IP1上的mongos配置文件

红框为新增的mongocfg节点

 

./bin/mongos -f config/mongos.conf      //启动mongos服务

 

  1. 新增mongos

在第二台服务器增加一个Mongos服务

vi config/mongos.conf

第一个红框为mongocfg副本集IP,第二个红框为mongos服务所在IP

 

./bin/mongos -f config/mongos.conf      //启动mongos服务

猜你喜欢

转载自blog.csdn.net/sinat_15411661/article/details/83414038
今日推荐