文档章节

生产mongodb 分片与集群 方案

运维技术
 运维技术
发布于 2015/05/06 18:05
字数 1126
阅读 10667
收藏 0

生产mongodb 分片与集群 方案


一、 mongodb分片与集群拓扑图


 

二、分片与集群的部署

1.Mongodb的安装

分别在以上3台服务器安装好mongodb

安装方法见安装脚本。

2.Mongod 创建单个分片的副本集

10.68.4.209

①建立数据文件夹和日志文件夹

mdkir /data/{master,slave,arbiter}

mkdir /data/log/mongodb/{master,slave,arbiter}  -p

②建立配置文件

#master.conf

dbpath=/data/master

logpath=/data/log/mongodb/master/mongodb.log

pidfilepath=/var/run/mongo_master.pid

#directoryperdb=true

logappend=true

replSet=policydb

port=10002

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200


#slave.conf

dbpath=/data/slave

logpath=/data/log/mongodb/slave/mongodb.log

pidfilepath=/var/run/mongo_slave.pid

#directoryperdb=true

logappend=true

replSet=policydb

port=10001

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

 

#arbiter.conf

dbpath=/data/arbiter

logpath=/data/log/mongodb/arbiter/mongodb.log

pidfilepath=/var/run/mongo_arbiter.pid

#directoryperdb=true

logappend=true

replSet=policydb

port=10000

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

③启动mongodb

/etc/init.d/mongodb_master start

/etc/init.d/mongodb_slave  start

/etc/init.d/mongodb_arbiter start

④配置主、备、仲裁节点

主节点:

# /usr/local/mongodb/bin/mongo   10.68.4.209:10002

MongoDB shell version: 2.4.9

connecting to: 10.68.4.209:10002/test

> use admin

switched to db admin

>config={ _id:"policydb", members:[ {_id:0,host:'10.68.4.209:10002',priority:2}, {_id:1,host:'10.68.4.209:10001',priority:1},  

... {_id:2,host:'10.68.4.209:10000',arbiterOnly:true}] };

{

        "_id" : "policydb",

        "members" : [

                {

                        "_id" : 0,

                        "host" : "10.68.4.209:10002",

                        "priority" : 2

                },

                {

                        "_id" : 1,

                        "host" : "10.68.4.209:10001",

                        "priority" : 1

                },

                {

                        "_id" : 2,

                        "host" : "10.68.4.209:10000",

                        "arbiterOnly" : true

                }

        ]

}

rs.initiate(config)   #初始化

rs.status()   #查看集群状态

 

10.68.4.29

①建立数据文件夹和日志文件夹

mdkir /data/{master,slave,arbiter}

mkdir /data/log/mongodb/{master,slave,arbiter}  -p

②建立配置文件

#master.conf

dbpath=/data/master

logpath=/data/log/mongodb/master/mongodb.log

pidfilepath=/var/run/mongo_master.pid

#directoryperdb=true

logappend=true

replSet=policydb2

port=10002

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

 

#slave.conf

dbpath=/data/slave

logpath=/data/log/mongodb/slave/mongodb.log

pidfilepath=/var/run/mongo_slave.pid

#directoryperdb=true

logappend=true

replSet=policydb2

port=10001

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

 

#arbiter.conf

dbpath=/data/arbiter

logpath=/data/log/mongodb/arbiter/mongodb.log

pidfilepath=/var/run/mongo_arbiter.pid

#directoryperdb=true

logappend=true

replSet=policydb2

port=10000

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

③启动mongodb

/etc/init.d/mongodb_master start

/etc/init.d/mongodb_slave  start

/etc/init.d/mongodb_arbiter start

 

④配置主、备、仲裁节点

主节点:

# /usr/local/mongodb/bin/mongo   10.68.4.209:10002

MongoDB shell version: 2.4.9

connecting to: 10.68.4.209:10002/test

> use admin

switched to db admin

> config={ _id:"policydb2", members:[ {_id:0,host:'10.68.4.29:10002',priority:2}, {_id:1,host:'10.68.4.29:10001',priority:1},  

... {_id:2,host:'10.68.4.209:10000',arbiterOnly:true}] };

{

        "_id" : "policydb",

        "members" : [

                {

                        "_id" : 0,

                        "host" : "10.68.4.29:10002",

                        "priority" : 2

                },

                {

                        "_id" : 1,

                        "host" : "10.68.4.29:10001",

                        "priority" : 1

                },

                {

                        "_id" : 2,

                        "host" : "10.68.4.29:10000",

                        "arbiterOnly" : true

                }

        ]

}

rs.initiate(config)   #初始化

rs.status()   #查看集群状态

10.68.4.30

①建立数据文件夹和日志文件夹

mdkir /data/{master,slave,arbiter}

mkdir /data/log/mongodb/{master,slave,arbiter}  -p

②建立配置文件

#master.conf

dbpath=/data/master

logpath=/data/log/mongodb/master/mongodb.log

pidfilepath=/var/run/mongo_master.pid

#directoryperdb=true

logappend=true

replSet=policydb3

port=10002

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

 

#slave.conf

dbpath=/data/slave

logpath=/data/log/mongodb/slave/mongodb.log

pidfilepath=/var/run/mongo_slave.pid

#directoryperdb=true

logappend=true

replSet=policydb3

port=10001

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

 

#arbiter.conf

dbpath=/data/arbiter

logpath=/data/log/mongodb/arbiter/mongodb.log

pidfilepath=/var/run/mongo_arbiter.pid

#directoryperdb=true

logappend=true

replSet=policydb3

port=10000

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

③启动mongodb

/etc/init.d/mongodb_master start

/etc/init.d/mongodb_slave  start

/etc/init.d/mongodb_arbiter start

 

④配置主、备、仲裁节点

主节点:

# /usr/local/mongodb/bin/mongo   10.68.4.209:10002

MongoDB shell version: 2.4.9

connecting to: 10.68.4.209:10002/test

> use admin

switched to db admin

> config={ _id:"policydb3", members:[ {_id:0,host:'10.68.4.30:10002',priority:2}, {_id:1,host:'10.68.4.30:10001',priority:1},  

... {_id:2,host:'10.68.4.30:10000',arbiterOnly:true}] };

{

        "_id" : "policydb",

        "members" : [

                {

                        "_id" : 0,

                        "host" : "10.68.4.30:10002",

                        "priority" : 2

                },

                {

                        "_id" : 1,

                        "host" : "10.68.4.30:10001",

                        "priority" : 1

                },

                {

                        "_id" : 2,

                        "host" : "10.68.4.30:10000",

                        "arbiterOnly" : true

                }

        ]

}

rs.initiate(config)   #初始化

rs.status()   #查看集群状态

 

2.Mongod 创建单个分片的配置服务器

① 创建配置目录

10.68.4.209  mkdir  /data/config

10.68.4.29    mkdir  /data/config

10.68.4.30    mkdir  /data/config

②准备配置服务器的配置文件

3个服务器的配置服务器的配置文件一致

 

#config.conf

dbpath=/data/config

logpath=/data/log/mongodb/config/mongodb.log

pidfilepath=/var/run/mongo_config.pid

directoryperdb=true

logappend=true

port=10003

fork=true

configsvr=true

③启动配置服务器

/etc/init.d/mongodb_config start

 

3.Mongod 创建并配置mongos和开启分片模式

① 创建日志目录

Mkdir -p /data/log/mongodb/mongos/

② 准备mongos的配置文件

#mongos.conf

logpath=/data/log/mongodb/mongos/mongodb.log

pidfilepath=/var/run/mongo_mongos.pid

logappend=true

port=10004

fork=true

configdb=10.68.4.209:10003,10.68.4.29:10003,10.68.4.30:1000

③ 启动mongos

/etc/init.d/mongodb_mongos start

 

 

④ 配置分片

sh.addShard("policydb/10.68.4.209:10002")

sh.addShard("policydb2/10.68.4.29:10002")

sh.addShard("policydb3/10.68.4.30:10002")

sh.enableSharding("policydb")

db.runCommand({"shardcollection":"policydb.fullPolicyTextInfo_history", "key":{"key":1}})

 

db.printShardingStatus() #查看分片状态

sh.status({verbose:true})

sh.status()

 

3.快速创建副本集和配置服务脚本

上图

1.图1

2.图2 config.conf配置文件

3.图3

 

 

 附mongodb一键安装脚本:

 http://pan.baidu.com/s/1c0zvP7M

附mongodb副本集和配置服务器一键配置脚本:

http://pan.baidu.com/s/1GuQ0A



 

 

 

 

 

 

 


© 著作权归作者所有

共有 人打赏支持
运维技术
粉丝 104
博文 105
码字总数 110191
作品 1
广州
部门经理
私信 提问
加载中

评论(22)

i
itxm
嗯,总结的不错,这个也参考一下http://www.itxm.net/a/dashuju/2016/1221/892.html
kt431128
kt431128
写的很清晰,不错
newerly
newerly
有个问题请教一下,我有四个数据库需要存到分片集群,其中两个数据库的数据量比较大需要做分片,而另外两个数据库的数据量比较小不想做分片,同时,在应用程序端我只希望开启一个连接来同时操作这次四个数据库,那没有开启enableSharding的数据库是存在集群的什么地方?谢谢
引鸩怼孑
引鸩怼孑

引用来自“咚往咚来”的评论

我们已决定废弃mongo了
我们已经放弃了。
星辰大海88
星辰大海88

引用来自“运维技术”的评论

引用来自“jamesmo”的评论

引用来自“一只小桃子”的评论

如何解决mongos是单点的问题?

引用来自“运维技术”的评论

mongos 也可以交叉构建的
团队要有DBA,即使是兼职的

大公司才有 一般公司根本不配备。
运维兼职到处都是这样

看似增加成本,其实少走弯路,节约更多项目成本。
x
xcdebw
路上
运维技术
运维技术

引用来自“jamesmo”的评论

引用来自“一只小桃子”的评论

如何解决mongos是单点的问题?

引用来自“运维技术”的评论

mongos 也可以交叉构建的
团队要有DBA,即使是兼职的

大公司才有 一般公司根本不配备。
运维兼职到处都是这样
星辰大海88
星辰大海88

引用来自“一只小桃子”的评论

如何解决mongos是单点的问题?

引用来自“运维技术”的评论

mongos 也可以交叉构建的
团队要有DBA,即使是兼职的
运维技术
运维技术

引用来自“一只小桃子”的评论

如何解决mongos是单点的问题?
mongos 也可以交叉构建的
运维技术
运维技术

引用来自“一只小桃子”的评论

如何解决mongos是单点的问题?
右边在加一个副本集,你可以将拓扑图里面的所有的整体当做一台mongodb,然后在构建一个副本集就可以了。
生产mongodb 分片与集群 方案

@运维技术 你好,想跟你请教个问题:最近在研究mongodb分片 看到您的这篇文章《生产mongodb 分片与集群方案》,文章下边的网盘地址失效了 能给个新地址吗? 研究一下您写的脚本,十分谢谢。...

技术小菜来学习
2017/06/07
124
1
MongoDB 最佳实践

已经有很多关于 NoSQL 选择的文章了。影响你选择数据库的因素有:读/写操作的吞吐量,持久性,一致性,延迟性等等。Nathan Hurst 的文章“Visual Guide to NoSQL System” 很好的总结了这一点...

红薯
2012/02/21
7.6K
11
MongoDB 最佳实践

已经有很多关于 NoSQL 选择的文章了。影响你选择数据库的因素有:读/写操作的吞吐量,持久性,一致性,延迟性等等。Nathan Hurst 的文章“Visual Guide to NoSQL System” 很好的总结了这一点...

彭博
2012/11/27
1K
0
MongoDB高可用方案原理解析

MongoDB 是当前比较流行的文档型数据库,其拥有易使用、易扩展、功能丰富、性能卓越等特性。MongoDB 本身就拥有高可用及分区的解决方案,分别为副本集(Replica Set)和分片(sharding),下面我...

arthur376
2018/08/27
0
0
MongoDB集群部署 - 带访问控制的分片副本集

1. 前言   Ceilometer将meter、event等数据保存在MongoDB中,之前将MongoDB部署在控制节点上,使用三副本模式,时间长了发现meter数据爆炸式增长,区区2T的磁盘捉襟见肘,而想删除旧数据,...

Sai18
2018/08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
0
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
0
0
《万历十五年》的读后感作文4000字

《万历十五年》的读后感作文4000字: 万历十五年,即1587年,距今已过去432年。在明朝276的历史中,这一年很平淡,并没有什么特别之处。黄仁宇的《万历十五年》一书,有别于其他的历史叙述方...

原创小博客
昨天
0
0
vue组件系列4、Table封装下

知道了slot 怎么用,才可以理解table这样封装的原因 table插件部分 <template> <div> <!-- 关键字部分 --> <div class="pre_search" v-show="show_key"> <label>关键字:......

轻轻的往前走
昨天
0
0
laravel嵌套预加载限制字段

之前有写过laravel关联查询的坑,后经一位博友提醒可以简写,详见https://my.oschina.net/u/3470006/blog/3020215 自己实践了下果然如此,要查询user表和与之关联的信息表userinfo直接可以用...

gcudwork
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部