[Mo]MongoDB分片副本集搭建

Posted M小小虾米

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Mo]MongoDB分片副本集搭建相关的知识,希望对你有一定的参考价值。

        环境规划如下:

SERVER x.40

SERVER x.55

SERVER x.127

mongos:20000

mongos:20000

mongos:20000

config:21000

config:21000

config:21000

shard1:27001主节点

shard1:27001 副节点

shard1:27001 仲裁

shard2:27002 仲裁

shard2:27002 主节点

shard2:27002 副节点

shard3:27003 副节点

shard3:27003 仲裁

shard3:27003 主节点


        操作步骤:

        1.三个节点都安装Mongodb

tar -xzvf mongodb-linux-x86_64-rhel62-3.4.14.tgz -C /usr/local/

mv mongodb-linux-x86_64-rhel62-3.4.14 mongodb

分别在每台机器建立conf、mongos、config、shard1、shard2、shard3六个目录,因为mongos不存储数据,只需要建立日志文件目录即可。

mkdir -p /usr/local/mongodb/conf

mkdir -p /usr/local/mongodb/mongos/log

mkdir -p /usr/local/mongodb/config/{log,date}

mkdir -p /usr/local/mongodb/shard1/{log,date}

mkdir -p /usr/local/mongodb/shard2/{log,date}

mkdir -p /usr/local/mongodb/shard3/{log,date}

        2.三个节点配置config server并启动

vi /usr/local/mongodb/conf/config.conf

## 配置文件内容

pidfilepath = /usr/local/mongodb/config/log/configsrv.pid #设置PID

dbpath = /usr/local/mongodb/config/data #设置数据保存路径

logpath = /usr/local/mongodb/config/log/con.log #设置日志路径

logappend = true #设置日志写入方式

bind_ip = 0.0.0.0

port = 21000 #设置config的端口

fork = true

configsvr = true

replSet=configs #副本集名称

maxConns=20000 #设置最大连接数

#启动:

mongod -f /usr/local/mongodb/conf/config.conf

        3.登录任意一台配置服务器,初始化配置副本集

mongo --port 21000


config = {

_id : "configs",

members : [

{_id : 0, host : "192.168.x.40:21000" },

{_id : 1, host : "192.168.x.55:21000" },

{_id : 2, host : "192.168.x.127:21000" }

]

}

#初始化副本集

rs.initiate(config) #3.4以后设置分片必须要配置副本集,否则失败

        4.三个节点都配置分片副本集

        设置第一个分片副本集

        配置文件

vi /usr/local/mongodb/conf/shard1.conf

#配置文件内容

pidfilepath = /usr/local/mongodb/shard1/log/shard1.pid

dbpath = /usr/local/mongodb/shard1/data

logpath = /usr/local/mongodb/shard1/log/shard1.log

logappend = true

bind_ip = 0.0.0.0

port = 27001

fork = true

httpinterface=true

rest=true

replSet=shard1

shardsvr = true

maxConns=20000

启动三台服务器的shard1 server

mongod -f /usr/local/mongodb/conf/shard1.conf

        5.登陆任意一台服务器,初始化副本集

mongo --port 27001

#使用admin数据库

use admin

#定义副本集配置,第三个节点设置为仲裁节点。

config = {

_id : "shard1",

members : [

{_id : 0, host : "192.168.x.40:27001" },

{_id : 1, host : "192.168.x.55:27001" },

{_id : 2, host : "192.168.x.127:27001", arbiterOnly:true }]}

#初始化副本集配置

rs.initiate(config);

        6.同理,设置第二个分片和第三个分片副本集并初始化
        7.设置Mongs路由服务器

vi /usr/local/mongodb/conf/mongos.conf

pidfilepath = /usr/local/mongodb/mongos/log/mongos.pid

logpath = /usr/local/mongodb/mongos/log/mongos.log #路由不存储数据,所以只设置日志即可

logappend = true

bind_ip = 0.0.0.0

port = 20000

fork = true

configdb = configs/192.168.x.40:21000,192.168.x.55:21000,192.168.x.127:21000

maxConns=20000

启动三台服务器的mongos server

mongos -f /usr/local/mongodb/conf/mongos.conf

        8.设置三节点的分片和路由配置服务器串联成集群

登陆任意一台mongos

mongo --port 20000

#使用admin数据库

use  admin

#串联路由服务器与分片副本集

sh.addShard("shard1/192.168.x.40:27001,192.168.x.55:27001,192.168.x.127:27001")

sh.addShard("shard2/192.168.x.40:27002,192.168.x.55:27002,192.168.x.127:27002")

sh.addShard("shard3/192.168.x.40:27003,192.168.x.55:27003,192.168.x.127:27003")

#查看集群状态

sh.status()

        9.启用分片

#设置POSDB数据库分片生效

db.runCommand( { enablesharding :"posdb"});

#设置数据库posdb里test表根据id自动分片到shard1,2,3中

db.runCommand( { shardcollection : "posdb.test",key : {id: 1} } )

db.runCommand( { shardcollection : "posdb.test",key : {id: “hashed"} } )

测试分片配置结果

mongo  127.0.0.1:20000

use  posdb;

#插入测试数据

for (var i = 1; i <= 100000; i++)

db.test.save({id:i,"test":"val1"});

#查看分片情况

db.test.stats();

{

"sharded" : true,

"ns" : "posdb.test",

"count" : 100000,

"numExtents" : 13,

"size" : 5600000,

"storageSize" : 22372352,

"totalIndexSize" : 6213760,

"indexSizes" : {

"_id_" : 3335808,

"id_1" : 2877952

},

"avgObjSize" : 56,

"nindexes" : 2,

"nchunks" : 3,

"shards" : {

"shard1" : {

"ns" : "posdb.test",

"count" : 42183,

"size" : 0,

...

"ok" : 1

},

"shard2" : {

"ns" : "posdb.test",

"count" : 38937,

"size" : 2180472,

...

"ok" : 1

},

"shard3" : {

"ns" : "posdb.test",

"count" :18880,

"size" : 3419528,

...

"ok" : 1

}

},

"ok" : 1

}

        搭建成功!

以上是关于[Mo]MongoDB分片副本集搭建的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb 副本集+分片集群搭建

mongodb 集群搭建 分片+副本集

mongodb3.6集群搭建:分片+副本集

搭建MongoDB副本集&分片

MongoDB 副本集+分片 认证方式搭建

mongodb 3.4 集群搭建:分片+副本集