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

[经验分享] MongoDB Replica set 配置

[复制链接]

尚未签到

发表于 2018-10-27 11:06:18 | 显示全部楼层 |阅读模式
  > MongoDB简介:
  MongoDB是一个用c++编写,开放源码的文档数据库,NoSQL数据库的一种。NoSQL有时也称作Not Only SQL的简写,是对不同于传统的关系型数据库的数据库管理系统的统称。了解更多,请戳这里。mongodb官网:http://www.mongodb.org/。原创作品,转载时请务必以超链接形式标明文章 原始出处:http://xuclv.blog.51cto.com/5503169/1307258
  > 安装:
  OS:Linux gentoo2 3.8.13-gentoo
  mongodb:2.4.6
  host1:172.16.62.131
  host2: 172.16.62.137
  host3: 172.16.62.138
  1:查看Portage树中包含的mongodb
# ls /usr/portage/dev-db/mongodb/  ChangeLog  Manifest  files  metadata.xml  mongodb-2.2.6.ebuild  mongodb-2.4.6.ebuild
  2:package.keywords它列出了还未被确认适合你的系统或架构,但是你希望能安装的软件包
# vim /etc/portage/package.keywords/default         #添加如下行:  =dev-db/mongodb-2.4.6 ~amd64
  3:安装很简单
# emerge -av dev-db/mongodb  PS:
  如果你对gentoo不熟悉,可以查看gentoo手册,了解相关详情:
  http://www.gentoo.org/doc/zh_cn/handbook/handbook-amd64.xml?full=1
  如果用的是其他系统,安装请参考:
  http://docs.mongodb.org/manual/installation/
  > 切入正题:Mongodb Replica set
  > 简介:
  A replica set in MongoDB is a group of mongod processes that maintain the same data set,其提供了冗余和增加数据可用性。另外在某些情况下,您可以使用复制来提高读取能力。mongodb通过记录所有primary的更改到oplog中,来实现主从的数据一致性。更多详情:http://docs.mongodb.org/manual/replication/
  最小的一个Replica set 架构是有三名成员:
  1> 可以是一个primary节点,两个secondary节点(均可通过投票成为primary);
DSC0000.png

  2> 也可以是一个primary节点,一个secondary节点,一个arbiter节点(仅在选举中投票,不保存数据),下面的配置就是针对此种方式。
DSC0001.png

  > Replica set 配置:
  1:建立一个mongo的配置文件(文件名随意,三台server均需操作, 注意修改
# vim /etc/mongo.conf              #添加如下行:  dbpath=/var/lib/mongodb            #数据存放目录
  logpath=/var/log/mongodb/mongo.log #日志文件路径,这个不是目录哦
  pidfilepath=/var/run/mongo.pid     #进程文件
  directoryperdb=true                #每个数据库单独存放在一个目录
  logappend=true                     #已追加的方式记录日志
  replSet=reptest                    #Replicate set 的名字(随意)
  bind_ip=172.16.62.137,127.0.0.1    #监听地址
  port=27017                         #监听端口
  oplogSize=1000                     #oplog文件的大小,单位M,默认为磁盘剩余的5%,后期修改较为麻烦,建议根据业务读写比例,做合理修改
  fork=true                          #后台运行
  更多详情查看mongod的帮助:http://docs.mongodb.org/manual/reference/program/mongod/ 或mongod --help
  2:启动mongod (三台server均操作)
# mongod -f /etc/mongo.conf  
# netstat -tunlp | grep mongo
  3:连接到其中一台server上,配置(每台都可以)
# mongo  4:配置:
> config = { _id : "reptest", members : [ {_id : 0, host : '172.16.62.137:27017', priority : 2}, {_id : 1, host : '172.16.62.138:27017', priority : 1}, {_id : 2, host : '172.16.62.131:27017', arbiterOnly: true}, ] }  # _id : "reptest" :Replicate set的名字,须和配置文件保持一致
  # members : 包含一个数组,用一些字段描述成员的配置
  # _id :0 标示符
  # host: 主机:端口号
  # priority: 优先级,默认为:1
  # arbiterOnly: 指定为仲裁节点默认:false
  更多配置详情 http://docs.mongodb.org/manual/reference/replica-configuration/
  5:使配置生效
> rs.initiate(config)  6:查询状态
reptest:PRIMARY> rs.status()  
{
  "set" : "reptest",
  "date" : ISODate("2013-10-11T03:05:50Z"),
  "myState" : 1,
  "members" : [
  {
  "_id" : 0,
  "name" : "172.16.62.137:27017",
  "health" : 1,
  "state" : 1,
  "stateStr" : "PRIMARY",
  "uptime" : 35,
  "optime" : Timestamp(1381378514, 1),
  "optimeDate" : ISODate("2013-10-10T04:15:14Z"),
  "self" : true
  },
  {
  "_id" : 1,
  "name" : "172.16.62.138:27017",
  "health" : 1,
  "state" : 2,
  "stateStr" : "SECONDARY",
  "uptime" : 25,
  "optime" : Timestamp(1381378514, 1),
  "optimeDate" : ISODate("2013-10-10T04:15:14Z"),
  "lastHeartbeat" : ISODate("2013-10-11T03:05:49Z"),
  "lastHeartbeatRecv" : ISODate("2013-10-11T03:05:49Z"),
  "pingMs" : 0,
  "lastHeartbeatMessage" : "syncing to: 172.16.62.137:27017",
  "syncingTo" : "172.16.62.137:27017"
  },
  {
  "_id" : 2,
  "name" : "172.16.62.131:27017",
  "health" : 1,
  "state" : 7,
  "stateStr" : "ARBITER",
  "uptime" : 17,
  "lastHeartbeat" : ISODate("2013-10-11T03:05:49Z"),
  "lastHeartbeatRecv" : ISODate("2013-10-11T03:05:49Z"),
  "pingMs" : 0
  }
  ],
  "ok" : 1
  
}
  以上说明配置已生效,在PRIMARY节点插入数据试试看把。另:mongodb还支持 Master Slave Replication(配置简单,提供了冗余,但不能实现高可用,官网已不推荐:http://docs.mongodb.org/manual/core/master-slave/)以及Sharding(针对大数据量进行分片,后续会涉及到http://docs.mongodb.org/manual/sharding/)



运维网声明 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-627059-1-1.html 上篇帖子: MongoDB和MySQL HandlerSocket性能测试及其结果分析 下篇帖子: mongodb morphia
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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