mongodb复制-副本集

  1. 复制简介
           配置一个单节点的mongo服务器适用与学习和测试环境,在线上真正的生产环境中我们需要使用复制将数据副本保存在多台服务器上,一台或者多台服务器挂掉之后可以顺利得通过选举算法选举出新的主节点。
           这样的多台服务器组成了mongo的副本集,副本集中有一个主节点和多个从节点,主节点用于读和写,从节点用于读(需要设置slaveOk为true,并且是在客户端设置),当主节点挂掉之后或者出现一些问题(如网络不通等情况),会通过选举算法选择出新的主节点。从节点的数据总是和主节点的数据保持一致,但是会稍稍晚于主节点的数据(有时候延迟时间较大,看集群情况)。
  2. 配置副本集
           本文将使用3台服务器作为一个副本集,下面讲述如何配置副本集
           下载最新的mongodb-linux-x86_64-ubuntu1204-3.2.0.tgz,去官网下载即可
           解压之后
           cd bin
           新建一个文件mongod.conf,写入以下内容
           dbpath=/home/xxx/xxx/mongodb/db                         # 指定mongo的db存放位置,默认是/data/db
           logpath=/home/xxx/xxx/xxx/mongodb/log.log          # 指定mongo的输出日志文件
           logappend=true                                                              # 日志文件采用append的方式追加到logpath中(重启mongo同样是追加)
           port=27017                                                                      # mongo使用的端口
           fork=true                                                                         # 以后台运行的方式启动,该项为true就必须配置logpath
  3. 复制
           将该mongo目录scp到其他两台机器上
  4. 启动
           cd bin
           ./mongod --replSet mondeo -f mongod.conf                # replSet指定以副本集方式启动,mondeo就是这个副本集的名字,启动项配置在mongod.conf中
           以上命令需要在3台服务器上都执行
  5. 配置副本集
           打开其中一个节点的mongo
           ./mongo
           config = {
                   "_id": "mondeo",
                   "members": [
                       {"_id": 0, "host": "xxx01:27017"},
                       {"_id": 1, "host": "xxx02:27017"},
                       {"_id": 2, "host": "xxx03:27017"},
                   ]
               }
          其中_id就是刚刚的副本集名称
          db = (new Mongo("xxx01:27017")).getDB("test")
          rs.initiate(config)
    过一段时间打开3台节点的mongo,会发现其中一个是primary节点,其他2个都是secondary节点,至此mongo副本集配置完毕。
  6. 关闭
    进行mongo,use admin 然后db.shutdownServer()               # 3台节点都需要

    其他相关的理论本文不涉及,包括但不仅限于:仲裁者、副本集动态添加和删除、如何备份和同步、节点选举机制、rollback等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值