文档章节

基于linux的mongodb3.2副本集+分片集群搭建

Chuck_Yang
 Chuck_Yang
发布于 2016/01/07 09:51
字数 973
阅读 113
收藏 7

前期准备

  1. 前往官网下载mongodb-3.2.0.tgz。https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel55-3.2.0.tgz

  2. 画出集群部署图。例如图1-1。

  3. 检查linux系统版本是否一致,时间是否一致。(版本不一致会导致集群间通信异常,时间不一致会导致mongodb同步异常)

  4. 关闭linux防火墙iptables


安装阶段

    1.官方建议使非root账户,所以我们就建一个mongo账户,在根目录建立mongo文件夹。然后用chmod和chown分配权限具体指令就不码了。

    2.将mongodb-3.2.0.tgz放入/mongo

    3.解压tgz tar xf mongodb-3.2.0.tgz (ps:由于我用sftp上传至服务器,所以将名字改短)

    4.在/mongo下创建logs(日志文件夹),conf(配置文件夹),pid(进程号文件夹),data(数据文件夹),data/config(config数据文件夹),data/arbiter(仲裁数据文件夹),data/shard1(1号分片数据文件夹),data/shard2(2号分片数据文件夹),data/shard3(3号数据分片文件夹)。

注意:其中根据当前配置服务选择创建哪几个分片,比如10.111.13.52这一台机器只需要创建shard1,shard2。而shard3在该机器未部署,所以不用创建。

    5.编写配置文件。

   

 #10.111.13.52
 
 文件名:shard1.conf
    logpath=/mongo/logs/shard1.log
    logappend=true
    fork=true
    port=9082
    dbpath=/mongo/data/shard1
    pidfilepath=/mongo/pid/shard1.pid
    storageEngine=wiredTiger
    #分片标识
    replSet=shard1
    oplogSize=50

  文件名:shard2.conf
    logpath=/mongo/logs/shard2.log
    logappend=true
    fork=true
    port=9083
    dbpath=/mongo/data/shard2
    pidfilepath=/mongo/pid/shard2.pid
    storageEngine=wiredTiger
    #分片标识
    replSet=shard2
    oplogSize=50
 
  文件名:arbiter.conf
    logpath=/mongo/logs/arbiter.log
    logappend=true
    fork=true
    port=9084
    dbpath=/mongo/data/arbiter
    pidfilepath=/mongo/pid/arbiter.pid
    nojournal=true
    storageEngine=wiredTiger
    #replSet设置为shard3是由于在最初规划的时候10.111.13.52机器的仲裁节点管理的是shard2的副本集节点,所以此 处设置为shard2,而53应该设置为shard1,以此类推。
    replSet=shard3
    oplogSize=50

    其他两台机器的配置无非改下分片标识,存储路径之类的,大同小异,这里就不例举了。

启动阶段

    1.首先各个服务器的configServer(配置服务器)跑起来。(命令都为同一个)

#首先进入mongodb的bin目录,懒得配置环境变量。
./mongod --configsvr --dbpath /mongo/data/config --port 9080 --logpath /mongo/logs/config.log --fork

    2.启动各个服务器mongosServer(路由服务器)

#首先进入mongodb的bin目录,懒得配置环境变量。(确保configServer已经启动,否则会出现连接异常之类的错误)
./mongos --configdb 10.111.13.52:9080,10.111.13.53:9080,10.111.13.54:9080 --port 9081 --logpath /mongo/logs/mongos.log --chunkSize 50 --fork

    3.启动各个服务器数据节点

#首先进入mongodb的bin目录,懒得配置环境变量。(此处只有10.111.13.52服务器的命令,其他服务器命令根据部署图做修改)
./mongod -f ../../conf/shard1.conf
./mongod -f ../../conf/shard2.conf
./mongod -f ../../conf/arbiter.conf


配置集群

    1.首先配置副本集(replSet),这里用shard1做例子。

#首先进入mongodb的bin目录,懒得配置环境变量。
#连接任意一台shard1的服务器。比如10.111.13.52:9082,10.111.13.54:9083,10.111.13.53:9084
#此处采用10.111.13.52的服务器做例子
./mongo --port 9082
#进入mongo命令行
#切换到admin空间
mongo> use admin
mongo> config = { _id:"shard1", members:[
                     {_id:0,host:"10.111.13.52:9082"},
                     {_id:1,host:"10.111.13.54:9083"},
                     {_id:2,host:"10.111.13.53:9084",arbiterOnly:true}
                ]
         }
mongo> rs.initiate(config);

    其他机器同理可推。


    2.配置shard分片。

#首先进入mongodb的bin目录,懒得配置环境变量。
#连接任意一台mongos的服务器。比如10.111.13.52:9081,10.111.13.54:9081,10.111.13.53:9081

mongos> use admin
#设置分片集合
mongos> db.runCommand( { addshard : "shard1/10.111.13.52:9082,10.111.13.54:9083"});
mongos> db.runCommand( { addshard : "shard2/10.111.13.53:9082,10.111.13.52:9083"});
mongos> db.runCommand( { addshard : "shard3/10.111.13.54:9082,10.111.13.53:9083"});
#将某个(sysobj)库启用分片
mongos> db.runCommand({"enablesharding": "sysobj"}) 
#设置sysobj库中obj集合的片键(分片的键值),1为正序,-1为逆序。
mongos> sh.shardCollection("sysobj.obj",{"Data-UUID":1,"GlobalTargetType":1,"GlobalSourceType":1})


    搭建篇就到此结束。

© 著作权归作者所有

Chuck_Yang
粉丝 3
博文 2
码字总数 1284
作品 0
昆明
高级程序员
私信 提问
搭建高可用mongodb集群(四)—— 分片

按照上一节中《搭建高可用mongodb集群(三)—— 深入副本集》搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大?数据压力大到机器支撑不了的...

观澜而索源
2014/03/29
0
0
zanePerfor前端性能监控系统高可用之Mongodb副本集读写分离架构

HI!,你好,我是zane,zanePerfor是一款最近我开发的一个前端性能监控平台,现在支持web浏览器端和微信小程序段。 我定义为一款完整,高性能,高可用的前端性能监控系统,这是未来会达到的目...

2018/11/14
0
0
搭建高可用mongodb集群(四)—— 分片

按照上一节中《搭建高可用mongodb集群(三)—— 深入副本集》搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的...

张升强
2014/04/03
0
0
mongodb 3.4 集群搭建:分片+副本集

mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群。 在搭建集群之前,需要首先了解几个概念:路由,分片、副本集、配...

纯洁的虫纸
2017/08/11
0
0
mongodb3.2复制集和shard集群搭建

三台机器操作系统环境如下: 1 2 3 4 5 6 7 架构如下图,之前的架构图找不到了,就凑合看下面的表格吧。。 192.168.75.128、shard1:10001、shard2:10002、shard3:10003、configsvr:10004、m...

空灵飞渡
2016/11/04
14
0

没有更多内容

加载失败,请刷新页面

加载更多

Tedis:基于 TiKV 构建的 NoSQL 数据库

作者介绍: 陈东明,饿了么北京技术中心架构组负责人,负责饿了么的产品线架构设计以及饿了么基础架构研发工作。曾任百度架构师,负责百度即时通讯产品的架构设计。具有丰富的大规模系统构 ...

TiDB
29分钟前
0
0
linux命令

ls命令是linux下最常用的命令。ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单。如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件...

WinkJie
37分钟前
0
0
你需要的物流运输类报表,这里都有

你需要的物流运输类报表,都在这里 葡萄城报表模板库是一款免费的报表制作、学习和参考工具,包含了超过 200 张高质量报表模板,涵盖了 16 大行业和 50 多种报表类型,为 30 余万报表开发者提...

葡萄城技术团队
44分钟前
2
0
像Java SE一样编写Java EE(ddd探索)

今天主要改写昨天的组合模式成Web系统。 容器接口为 public interface TreeProduct { /** * 展示所有产品 * @return */ List<TreeProduct> allProducts();...

算法之名
45分钟前
0
0
Django Model 模型建立

Django Model 模型 Django Model层是Django的数据模型层,每一个Model类就是数据库中的一张表; 我们需要注意下面几点: model一般都是定义在不同的APP的models.py模块文件中,可以是一个,也...

彩色泡泡糖
53分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部