视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ReplicaSets+Sharding方案之真实弹篇
2020-11-09 14:58:22 责编:小采
文档

话说在虚拟机中会报各种错误,在真实的环境中就不会那么痛苦了。 想了一下虚拟机中报错的原因有。机器卡,处理的时间长就会抛出错误 还有虚拟机如果给的空间太小,也会报异常。 此处讲讲我的大致思路。 第一,选择三台服务器,最好不是虚拟的 第二,设计三台

话说在虚拟机中会报各种错误,在真实的环境中就不会那么痛苦了。
想了一下虚拟机中报错的原因有。机器卡,处理的时间长就会抛出错误
还有虚拟机如果给的空间太小,也会报异常。
此处讲讲我的大致思路。
第一,选择三台服务器,最好不是虚拟的
第二,设计三台服务器的IP,端口,和各自的角色
第三,检查防火墙有没有关闭,时间是不是同步
如果上面都可以了,那你就可以操作了。
当然,mongodb版本和mongodb前提搭建就建在前面吧

wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_-2.0.4.tgz

解压mongodb文件

主机1 版本号不一样。我的是2.0.4

[root@mongodb40 ~]# tar zxvfmongodb-linux-x86_-2.4.7.tgz

[root@mongodb40 ~]# mvmongodb-linux-x86_-2.4.7 /home/mongodb

主机2

[root@mongodb41~]# tar zxvfmongodb-linux-x86_-2.4.7.tgz

[root@mongodb41~]# mvmongodb-linux-x86_-2.4.7 /home/mongodb

主机3

[root@mongodb250 ~]# tar zxvfmongodb-linux-x86_-2.4.7.tgz

[root@mongodb250~]# mvmongodb-linux-x86_-2.4.7 /home/mongodb

mongo集群分片实战

服务器三台

主机1(172.16.0.40) 主机2(172.16.0.41) 主机3(172.16.0.250)

第一片(11731) 主 副本 仲裁

第二片(11732) 仲裁 主 副本

第三片(11733) 副本 仲裁 主

30000 configServer configServer config Server

60000 RouteProcess RouteProcess Route Process

创建数据库目录

主机1(172.16.0.40)配置文件

[root@mongodb115 ~]# mkdir -p/home/data/shard1_1

[root@mongodb115 ~]# mkdir -p/home/data/shard2_1

[root@mongodb115 ~]# mkdir -p/home/data/shard3_1

[root@mongodb115 ~]# mkdir -p/home/data/config #config server目录

[root@mongodb115 ~]# mkdir -p/home/config #放配置文件

[root@mongodb115 ~]# mkdir -p/home/data/logs

这个地方的所有配置目录都放在/home/config目录下,切记切记啊,因为我在这里吃过亏,不知一次。

分片1

[root@mongodb40 config]# catshard1_1.conf

port=11731

dbpath=/home/data/shard1_1

logpath=/home/data/logs/shard1_1.log

directoryperdb=true

logappend=true

replSet=shard1

#bind_ip=172.16.0.40

shardsvr=true

fork=true

pidfilepath=/home/data/shard1_1.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

分片2

[root@mongodb40 config]# catshard2_1.conf

port=11732

dbpath=/home/data/shard2_1

logpath=/home/data/logs/shard2_1.log

directoryperdb=true

logappend=true

replSet=shard2

#bind_ip=172.16.0.40

shardsvr=true

fork=true

pidfilepath=/home/data/shard2_1.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

分片3

[root@mongodb40 config]# catshard3_1.conf

port=11733

dbpath=/home/data/shard3_1

logpath=/home/data/logs/shard3_1.log

directoryperdb=true

logappend=true

replSet=shard3

#bind_ip=172.16.0.40

shardsvr=true

fork=true

pidfilepath=/home/data/shard3_1.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

config server 配置文件

[root@mongodb40 config]# catconfig.conf

port=30000

dbpath=/home/data/config

logpath=/home/data/logs/config.log

directoryperdb=true

configsvr=true

logappend=true

#bind_ip=172.16.0.40

fork=true

pidfilepath=/home/data/config.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

RouteProces 配置文件

[root@mongodb40 config]# catmongos.conf

port=60000

logpath=/home/data/logs/mongos.log

logappend=true

configdb=172.16.0.40:30000,172.16.0.41:30000,172.16.0.250:30000

#bind_ip=172.16.0.40

fork=true

pidfilepath=/home/data/mongos.pid

chunkSize=5

maxConns=20000

nohttpinterface=true

主机2(172.16.0.41)配置文件

[root@mongodb114 ~]# mkdir -p/home/data/shard1_2

[root@mongodb114 ~]# mkdir -p/home/data/shard2_2

[root@mongodb114 ~]# mkdir -p/home/data/shard3_2

[root@mongodb114 ~]# mkdir -p/home/data/config #config server目录

[root@mongodb114 ~]# mkdir -p/home/config #放配置文件

[root@mongodb114 ~]# mkdir -p/home/data/logs

分片1

[root@mongodb41 config]# catshard1_2.conf

port=11731

dbpath=/home/data/shard1_2

logpath=/home/data/logs/shard1_2.log

directoryperdb=true

logappend=true

replSet=shard1

#bind_ip=172.16.0.41

shardsvr=true

fork=true

pidfilepath=/home/data/shard1_2.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

分片2

[root@mongodb41 config]# catshard2_2.conf

port=11732

dbpath=/home/data/shard2_2

logpath=/home/data/logs/shard2_2.log

directoryperdb=true

logappend=true

replSet=shard2

#bind_ip=172.16.0.41

shardsvr=true

fork=true

pidfilepath=/home/data/shard2_2.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

分片3

[root@mongodb41 config]# catshard3_2.conf

port=11733

dbpath=/home/data/shard3_2

logpath=/home/data/logs/shard3_2.log

directoryperdb=true

logappend=true

replSet=shard3

#bind_ip=172.16.0.41

shardsvr=true

fork=true

pidfilepath=/home/data/shard3_2.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

config server 配置文件

[root@mongodb41 config]# catconfig.conf

port=30000

dbpath=/home/data/config

logpath=/home/data/logs/config.log

directoryperdb=true

configsvr=true

logappend=true

#bind_ip=172.16.0.41

fork=true

pidfilepath=/home/data/config.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

RouteProces 配置文件

[root@mongodb41 config]# catmongos.conf

port=60000

logpath=/home/data/logs/mongos.log

logappend=true

configdb=172.16.0.40:30000,172.16.0.41:30000,172.16.0.250:30000

#bind_ip=172.16.0.41

fork=true

pidfilepath=/home/data/mongos.pid

chunkSize=5

maxConns=20000

nohttpinterface=true

主机3(172.16.0.250)配置文件

[root@mongodb103 ~]# mkdir -p/home/data/shard1_3

[root@mongodb103 ~]# mkdir -p/home/data/shard2_3

[root@mongodb103 ~]# mkdir -p/home/data/shard3_3

[root@mongodb103 ~]# mkdir -p/home/data/config #config server目录

[root@mongodb103 ~]# mkdir -p/home/config #放配置文件

[root@mongodb103 ~]# mkdir -p/home/data/logs

分片1

[root@mongodb250 config]# catshard1_3.conf

port=11731

dbpath=/home/data/shard1_3

logpath=/home/data/logs/shard1_3.log

directoryperdb=true

logappend=true

replSet=shard1

#bind_ip=172.16.0.250

shardsvr=true

fork=true

pidfilepath=/home/data/shard1_3.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

分片2

[root@mongodb250 config]# catshard2_3.conf

port=11732

dbpath=/home/data/shard2_3

logpath=/home/data/logs/shard2_3.log

directoryperdb=true

logappend=true

replSet=shard2

#bind_ip=172.16.0.250

shardsvr=true

fork=true

pidfilepath=/home/data/shard2_3.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

分片3

[root@mongodb250 config]# catshard3_3.conf

port=11733

dbpath=/home/data/shard3_3

logpath=/home/data/logs/shard3_3.log

directoryperdb=true

logappend=true

replSet=shard3

#bind_ip=172.16.0.250

shardsvr=true

fork=true

pidfilepath=/home/data/shard3_3.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

config server 配置文件

[root@mongodb250 config]# catconfig.conf

port=30000

dbpath=/home/data/config

logpath=/home/data/logs/config.log

directoryperdb=true

configsvr=true

logappend=true

#bind_ip=172.16.0.250

fork=true

pidfilepath=/home/data/config.pid

maxConns=20000

oplogSize=5000

noprealloc=true

nohttpinterface=true

RouteProces 配置文件

[root@mongodb250 config]# catmongos.conf

port=60000

logpath=/home/data/logs/mongos.log

logappend=true

configdb=172.16.0.40:30000,172.16.0.41:30000,172.16.0.250:30000

#bind_ip=172.16.0.250

fork=true

pidfilepath=/home/data/mongos.pid

chunkSize=5

maxConns=20000

nohttpinterface=true

启动shard1,shard2,shard3

主机1

[root@mongodb115 ~]#/home/mongodb/bin/mongod -f /home/config/shard1_1.conf

[root@mongodb115 ~]#/home/mongodb/bin/mongod -f /home/config/shard2_1.conf

[root@mongodb115 ~]#/home/mongodb/bin/mongod -f /home/config/shard3_1.conf

主机2

[root@mongodb114 ~]#/home/mongodb/bin/mongod -f /home/config/shard1_2.conf

[root@mongodb114 ~]#/home/mongodb/bin/mongod -f /home/config/shard2_2.conf

[root@mongodb114 ~]#/home/mongodb/bin/mongod -f /home/config/shard3_2.conf

主机3

[root@mongodb103 ~]#/home/mongodb/bin/mongod -f /home/config/shard1_3.conf

[root@mongodb103 ~]#/home/mongodb/bin/mongod -f /home/config/shard2_3.conf

[root@mongodb103 ~]#/home/mongodb/bin/mongod -f /home/config/shard3_3.conf

配置ReplicaSets

配置分片1 在172.16.0.40上配置

[root@mongodb115 ~]# /home/mongodb/bin/mongo--port 11731

MongoDB shell version: 2.0.4

connecting to:127.0.0.1:11731/test

>config={_id:'shard1',members:[{_id:0,host:'172.16.0.40:11731',priority:2},{_id:1,host:'172.16.0.41:11731'},{_id:2,host:'172.16.0.250:11731',arbiterOnly:true}]}

rs.initiate(config)

配置分片2 在172.16.0.41上配置

[root@mongodb114 ~]# /home/mongodb/bin/mongo--port 11732

MongoDB shell version: 2.0.4

connecting to:127.0.0.1:11732/test

>config={_id:'shard2',members:[{_id:0,host:'172.16.0.40:11732',arbiterOnly:true},{_id:1,host:'172.16.0.41:11732',priority:2},{_id:2,host:'172.16.0.250:11732'}]}

rs.initiate(config)

配置分片3 在172.16.0.250上配置members里面的优先级priority值高的为主节点,对于仲裁点一定要加上arbiterOnly:true

[root@mongodb103 ~]# /home/mongodb/bin/mongo--port 11733

MongoDB shell version: 2.0.4

connecting to:127.0.0.1:11733/test

>config={_id:'shard3',members:[{_id:0,host:'172.16.0.40:11733'},{_id:1,host:'172.16.0.41:11733',arbiterOnly:true},{_id:2,host:'172.16.0.25:11733',priority:2}]}

rs.initiate(config)

启动3台configserver

主机1

[root@mongodb40 ~]#/home/mongodb/bin/mongod -f/home/config/config.conf

主机2

[root@mongodb41 ~]#/home/mongodb/bin/mongod -f/home/config/config.conf

主机3

[root@mongodb250 ~]#/home/mongodb/bin/mongod -f/home/config/config.conf

启动3台Route Process

主机1

[root@mongodb40 ~]# /home/mongodb/bin/mongos-f /home/config/mongos.conf

主机2

[root@mongodb41 ~]# /home/mongodb/bin/mongos-f /home/config/mongos.conf

主机3

[root@mongodb250 ~]#/home/mongodb/bin/mongos -f /home/config/mongos.conf

配置shardCluser

[root@mongodb115 ~]# /home/mongodb/bin/mongo--port 60000

MongoDB shell version: 2.0.4

connecting to:127.0.0.1:60000/test

mongos> use admin

switched to db admin

mongos>db.runCommand({addshard:"shard1/172.16.0.40:11731,172.16.0.41:11731, 172.16.0.250:11731"})

mongos>db.runCommand({addshard:"shard2/172.16.0.40:11732,172.16.0.41:11732, 172.16.0.250:11732"})

mongos> db.runCommand({addshard:"shard3/172.16.0.40:11733,172.16.0.41:11733, 172.16.0.250:11733"})

接下来激活分片,如下面的代码所示: 采用hash分片

db.runCommand({enablesharding:"test"})

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

上面这个会报错,我这边版本不支持hashed分片,要把id:1

下载本文
显示全文
专题