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

[经验分享] Mongodb集群搭建过程及常见错误

[复制链接]

尚未签到

发表于 2015-7-6 09:11:52 | 显示全部楼层 |阅读模式
Replica Sets

MongoDB 支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只 有一台是用于写操作。正是由于这个情况,为 MongoDB 提供了数据一致性的保障。担当 Primary 角色的机器能把读操作分发给 slave。

Replica Sets的结构非常类似一个集群。因 为它确实跟集群实现的作用是一样的, 其中一个节点如果出现故障, 其它节点马上会将业务接过来而无须停机操作。

下面以本机为例介绍一下集群的部署过程,以及部署过程中常见的注意点及错误

本例环境是Linux操作系统,mongodb版本:mongodb-linux-x86_64-2.6.1.tgz,Vmwre虚拟机,虚拟机IP:192.168.169.129,集群以本机不同端口模拟三台服务器。

1.集群主要分为三个节点master主节点,slaver备用节点,arbiter仲裁节点

建立数据文件夹




mkdir -p /mongodb/data/master
mkdir -p /mongodb/data/slaver
mkdir -p /mongodb/data/arbiter

  

ps:三个目录分别对应主,备,仲裁节点

2.建立配置文件夹

1)master.conf

    打开编辑器:




vi /etc/master.conf

  按i 输入下列配置





dbpath=/home/mongodb/data/master  
logpath=/home/mongodb/log/master.log
logappend=true
replSet=rep1
port=10000
fork=true
journal=true

  完成之后按esc  》》 :  >>wq>>回车


2)slaver.conf

编辑器打开和保存按上边的步骤,下边只写详细内容




dbpath=/home/mongodb/data/slaver
logpath=/home/mongodb/log/slaver.log
logappend=true
replSet=rep1
port=10001
fork=true
journal=true

  3)arbiter.conf





dbpath=/home/mongodb/data/arbiter
logpath=/home/mongodb/log/arbiter.log
logappend=true
replSet=rep1
port=10002
fork=true
journal=true
smallfiles=true

  参数解释:












  dbpath:数据存放目录
  logpath:日志存放路径
  logappend:以追加的方式记录日志
  replSet:replica set的名字
  port:mongodb进程所使用的端口号,默认为27017
  fork:以后台方式运行进程
  journal:写日志
  smallfiles:当提示空间不够时添加此参数
  其他参数
  pidfilepath:进程文件,方便停止mongodb
  directoryperdb:为每一个数据库按照数据库名建立文件夹存放
  bind_ip:mongodb所绑定的ip地址
  oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%
  noprealloc:不预先分配存储
  3.启动Mongodb   















cd /home/mongodb/bin

DSC0000.jpg
  启动服务
















./mongod -f /etc/master.conf
./mongod -f /etc/slaver.conf
./mongod -f /etc/arbiter.conf

  有这样的提示说明启动成功
DSC0001.jpg
  如果是下列的提示说明启动失败
DSC0002.jpg
  启动失败的原因有很多,检查完配置文件,如果没有错误,可打开相应的配置文件查看详细的错误信息
  cat /etc/master.conf
  最常见的一个错误就是磁盘空间不足,会提示这样的错误
DSC0003.jpg



因为Mongodb的日志文件是成2g的增长,所以所需空间比较大,这时你可以在配置文件里添加这样的一个配置

smallfiles=true。

全部三个服务全部启动成功之后









  4.配置主(master),备(slaver),仲裁(arbiter)节点










  可以通过客户端连接mongodb,也可以直接在三个节点中选择一个连接mongodb。
  ./mongo 192.168.169.129:10000   #ip和port是某个节点的地址
  >use admin




>cfg={ _id:"rep1", members:[ {_id:0,host:'192.168.169.129:10000',priority:2}, {_id:1,host:'192.168.169.129:10001',priority:1},

{_id:2,host:'192.168.169.129:10002',arbiterOnly:true}] };

>rs.initiate(cfg) #使配置生效

DSC0004.jpg

{

        "set" : "rep1",

        "date" : ISODate("2014-09-05T02:44:43Z"),

        "myState" : 1,

        "members" : [

                {

                        "_id" : 0,

                        "name" : "192.168.169.129:10000",

                        "health" : 1,

                        "state" : 1,

                        "stateStr" : "PRIMARY",

                        "uptime" : 200,

                        "optime" : Timestamp(1357285565000, 1),

                        "optimeDate" : ISODate("2013-01-04T07:46:05Z"),

                        "self" : true

                },

                {

                        "_id" : 1,

                        "name" : "192.168.169.129:10001",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 200,

                        "optime" : Timestamp(1357285565000, 1),

                        "optimeDate" : ISODate("2013-01-04T07:46:05Z"),

                        "lastHeartbeat" : ISODate("2013-01-05T02:44:42Z"),

                        "pingMs" : 0

                },

                {

                        "_id" : 2,

                        "name" : "192.168.169.129:10002",

                        "health" : 1,

                        "state" : 7,

                        "stateStr" : "ARBITER",

                        "uptime" : 200,

                        "lastHeartbeat" : ISODate("2013-01-05T02:44:42Z"),

                        "pingMs" : 0

                }

        ],

        "ok" : 1

}



配置过程中可能还会出现其他的一些错误,不过都可以去查看相应的日志文件,去解决。

运维网声明 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-83648-1-1.html 上篇帖子: MongoDB的C#驱动基本使用 下篇帖子: 三十五个非主流开源数据库 MongoDB领衔主演
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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