设为首页 收藏本站
查看: 972|回复: 0

[经验分享] mongodb分片配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-11-7 09:12:53 | 显示全部楼层 |阅读模式
#本次配置时间为 2014-11-06 软件版本为:mongodb-linux-x86_64-2.4.3.tgz   
linux :centos 5.9 64bit
##############################################################
本次部署分片的方式,只为测试环境:                          #
              10.8.10.234    10.8.10.235    10.8.10.236     #
shard1 分片       master        slaver       arbiterOnly    #
shard2 分片       master        slaver       arbiterOnly    #
shard3 分片       master        slaver       arbiterOnly    #
                                                            #                                                            
###############################################################




#每个服务器配置:

mkdir  -p /data/mongodb/config/data
mkdir  -p /data/mongodb/config/log

mkdir  -p /data/mongodb/mongos/log

mkdir  -p /data/mongodb/shard1/data
mkdir  -p /data/mongodb/shard1/log

mkdir  -p /data/mongodb/shard2/data
mkdir  -p /data/mongodb/shard2/log

mkdir  -p /data/mongodb/shard3/data
mkdir  -p /data/mongodb/shard3/log

tar -xvzf mongodb-linux-x86_64-2.4.3.tgz
mv mongodb-linux-x86_64-2.4.3  /data/mongodb/mongodb

#每个服务器配置服务:

/data/mongodb/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/config/data --port 21000 --logpath /data/mongodb/config/log/config.log --fork


#每台服务器 启动分片服务:
/data/mongodb/mongodb/bin/mongod --shardsvr --replSet shard1 --port 22001 --dbpath /data/mongodb/shard1/data --logpath /data/mongodb/shard1/log/shard1.log --fork --nojournal --oplogSize 10


/data/mongodb/mongodb/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath /data/mongodb/shard2/data --logpath /data/mongodb/shard2/log/shard2.log --fork --nojournal --oplogSize 10


/data/mongodb/mongodb/bin/mongod --shardsvr --replSet shard3 --port 22003 --dbpath /data/mongodb/shard3/data --logpath /data/mongodb/shard3/log/shard3.log --fork --nojournal --oplogSize 10

# 1台或者多台服务器启动mongos路由,应用程序连接该路由端口。
#mongos 需要等到3台服务器的配置文件都启动之后 才能启动,否则报错。
/data/mongodb/mongodb/bin/mongos --configdb 10.8.10.234:21000,10.8.10.235:21000,10.8.10.236:21000 --port 20000 --logpath /data/mongodb/mongos/log/mongos.log --fork


#################################
#登入任意服务器执行:

mongo 127.0.0.1:22001
use admin

设置分片1

>config = { _id:"shard1", members:[
  {_id:0,host:"10.8.10.234:22001",priority:1},
  {_id:1,host:"10.8.10.235:22001",priority:1},
  {_id:2,host:"10.8.10.236:22001",arbiterOnly:true}
  ]
  }

>rs.initiate(config);

# ,priority:N 是设置master 优先级 可以不配置,建议把分片的master放置在不同的服务器,实现读写压力分流
# arbiterOnly:true 需要配置。省略后,变成1 master + 2个slaver 与方案不符

############################

mongo 127.0.0.1:22002
use admin

设置分片2
>config = { _id:"shard2", members:[
  {_id:0,host:"10.8.10.234:22002",priority:1},
  {_id:1,host:"10.8.10.235:22002",priority:1},
  {_id:2,host:"10.8.10.236:22002",arbiterOnly:true}
  ]
  }

>rs.initiate(config);

# ,priority:N 是设置master 优先级 可以不配置。建议把分片的master放置在不同的服务器,实现读写压力分流
# arbiterOnly:true 需要配置 。省略后,变成1master + 2个slaver 与方案不符

#############################

mongo 127.0.0.1:22003
use admin
设置分片3


>config = { _id:"shard3", members:[
  {_id:0,host:"10.8.10.234:22003",priority:1},
  {_id:1,host:"10.8.10.235:22003",priority:1},
  {_id:2,host:"10.8.10.236:22003",arbiterOnly:true}
  ]
  }


>rs.initiate(config);

# ,priority:N 是设置master 优先级 可以不配置。建议把分片的master放置在不同的服务器,实现读写压力分流
# arbiterOnly:true 需要配置。省略后,变成1master + 2个slaver 与方案不符

#########################

连接mongs:  bin/mongo 127.0.0.1:20000
#使用admin数据库 user admin
串联路由服务器与分配副本集1

db.runCommand( { addshard : "shard1/10.8.10.234:22001,10.8.10.235:22001,10.8.10.236:22001"});

串联路由服务器与分配副本集2
db.runCommand( { addshard : "shard2/10.8.10.234:22002,10.8.10.235:22002,10.8.10.236:22002"});

串联路由服务器与分配副本集3
db.runCommand( { addshard : "shard3/10.8.10.234:22003,10.8.10.235:22003,10.8.10.236:22003"});


#查看分片服务器的配置
db.runCommand( { listshards : 1 } );

备注:每个分片副本集的仲裁节点结果不列出来
##############################

###手动选定master备注:

在配置分片的时候 添加优先级可以手动选择master

分片配置后之后,使用如下命令,在分片的主节点登录,可以将members[1] 提升为Master。
rs.status();
rs.conf();
cfg=rs.conf();
cfg.members[0].priority=1
cfg.members[1].priority=2
#cfg.members[2] 仲裁机不用设置
rs.reconfig(cfg);


创建数据测试:
  #指定testdb分片生效
  db.runCommand( { enablesharding :"testdb"});
  #指定数据库里需要分片的集合和片键
  db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )
  我们设置testdb的 table1 表需要分片,根据 id 自动分片到 shard1 ,shard2,shard3 上面去。要这样设置是因为不是所有mongodb 的数据库和表 都需要分片!

bin/mongo 127.0.0.1:20000
  #使用testdb use testdb;
    #插入测试数据
  for (var i = 1; i <= 100000; i++)  db.table1.save({id:i,"test1":"testval1"});

  #查看分片情况如下,部分无关信息省掉了
  db.table1.stats();
看到数据分到3个分片,各自分片数量为: shard1 “count” : 42183,shard2 “count”: 38937,shard3 “count” : 18880。已经成功了!不过分的好像不是很均匀,所以这个分片还是很有讲究的,后续再深入讨论。


为了充分利用3台服务器资源,缓解磁盘Io ,以上方案可以如下变通:
##############################################################
在生产环境中,可以如下部署:                                #
              10.8.10.234    10.8.10.235    10.8.10.236     #
shard1 分片       master        slaver       arbiterOnly    #
shard2 分片      arbiterOnly    master        slaver        #
shard3 分片       slaver      arbiterOnly     master        #
                                                            #                                                            
###############################################################


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-27299-1-1.html 上篇帖子: mongodb视频教程 下篇帖子: CentOS 6.5安装MongoDB 2.6(多yum数据源)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表