MongoDB 3.0副本集配置

请先阅读我之前的文章《 MongoDB 3.0的在CentOS6.5上的安装
 
 一、创建副本集须知:
      1、存在一台有超级管理员的mongod服务器,可以有数据库,其他所有的服务器都必须是 全新安装,
           且每一台上都要创建超级管理员和数据库管理员,且账号、密码必须一致
      2、副本集或分片中的所有mongod服务器都必须持有同样的mongodb-keyfile,才能通讯成功。
      3、一旦创建成功后,任意一台哪怕是主服务器奔溃了都没有问题,会自动选举出一个主服务器,继续为用户服务。
          如果服务器资源比较紧张,可以一台Master,一台salver,一台仲裁服务器(与Salver部署在一起),注意必须至少有3台服务器,
          如果只是一台Master,一台Slaver,假Master挂了,此时Salver不会主动成为Master,此时MongoDB对外只能提供read服务。
      4、可以启动一台延迟备份节点,指定主机同步N时间后,才同步,比如主机同步一个月后同步,如果主机版本出现重大问题,导致其他正常的备机
           也出现问题,此时至少可以恢复到一个月以前,当然也可以定期凌晨备份主节点。
      5、可以将备节点依次停机,以单机模式mongod&方式启动,进行维护,比如给某个集合创建索引,然后重新以mongod副本集方式启动。
           这意味着:
           1、通过维护,副本的数据实际上可以和主节点不一致.
           2、insert的时候因为索引导致速度变慢,这样实现读写分离,读有索引的备节点快,插没有索引的主节点也快。
       6、副本集成员除了主服务器外,其他的都不能读写,除非设置db.setSlaveOk()才可以读,但依然不可以写。
       7、[拓展阅读,写得很好!]:http://snoopyxdy.blog.163.com/blog/static/60117440201241694254441/   (写得很好)
          
二、副本集创建步骤:
      1、准备3台全新MongoDB服务器(MongoDB3.0最多支持50台slaver),1台为Master,2个为salver(或者1台salver,一台仲裁服务器):
      2、为每一台服务器创建超级管理员,并创建数据库hezx的管理员(账号、密码、对应的数据库必须保持一致)
          一、预先创建mongodb 超级管理员,该账号可以关闭mongod进程
               1)、#mongod&,此时直接启动mongo后台服务
               2)、#mongo   
               3)、#use admin  连接到admin数据库
                #db.createUser({user: "superAdmin",pwd: "admin123",roles: [ "root" ]})
 
          二、预先创建指定的 数据库管理员:use 
               1)、#mongod&,此时直接启动mongo后台服务
               2) #mongo
                     #use hezx
               3)、如下语句为hezx数据库创建了一个管理员。
                    #db.createUser({user: "admin",pwd: "admin123",roles: [{ role: "readWrite", db: "hezx" },{ role: "readWrite", db: "admin" },{ role: "readWrite", db: "local" }]})
            用户可以use admin 使用 超级管理员删除该用户db.system.users.remove({"user":"账号名称"})
  
 
      3、正式启动副本集服务, 依次在3台MongoDB的服务器上执行如下命令:
           启动副本集命令,副本集名称fubenji必须一致。
            mongod --auth --replSet fubenji --config /etc/mongodb.conf
 
      
 
  4、在其中一台Mongo服务器的shell上执行,这台机器将成为Master,其他机器则成为了salver:
   >use admin
   > db.auth("superAdmin","admin123")   使用超级管理员登陆
   > config={"_id" : "fubenji","version" : 1,"members" : [{ "_id" : 1,"host":"192.168.62.152:17018"},{ "_id" : 2,"host":"192.168.62.153:17018"},{ "_id" : 
   3,"host":"192.168.62.154:17018"}]}
   > rs.initiate(config)
 
   如果提示:"errmsg" : "'192.168.62.153:17018' has data already, cannot initiate set."  说明,153机器不是全新的Mongo服务器,请重新安装后启动。
   如果提示:{ "ok" : 1 } 说明副本集配置成功。
 
   4、rs.status() 可以查看副本集中成员的状态:哪个salver已经挂了。
        health:1 活着  0 挂了     stateStr:"PRIMARY" 主  "SECONDARY" 从
   5、rs.add("192.168.62.155:17018") 可以添加新的salver,最好是全新的mongodb服务,否则新加入的服务上的数据库会被清除掉。
        rs.add({"_id":4,"host":"192.168.62.155:17018","priority":0,"hidden":true,“votes”:0}) //可以传递复杂的参数进行加入,如没有投票权,且不能成为主节点
        rs.remove("192.168.62.155:17018")可以删除salver。
        rs.reconfig()可以重新配置副本集。
        rs.isMaster()查看谁主从关系
        rs.stepDown()把主节点降级为备节点.
        rs.freeze(100000)对主节点维护100秒,且其他节点不能成为主节点
        rs.freeze(0)可以把退位的主节点重新变为主节点。
        db.setSlaveOk(),通过这个命令后,非主服务器可以进行查询的操作,但不能进行写操作。该命令退出shell后就失效
 
   6、此时通过mongo shell连接mongod服务,可执行任何mongod操作
        fubenji:PRIMARY>use admin
一、创建副本集须知:
      1、存在一台有超级管理员的mongod服务器,可以有数据库,其他所有的服务器都必须是 全新安装,
           且每一台上都要创建超级管理员和数据库管理员,且账号、密码必须一致
      2、副本集或分片中的所有mongod服务器都必须持有同样的mongodb-keyfile,才能通讯成功。
      3、一旦创建成功后,任意一台哪怕是主服务器奔溃了都没有问题,会自动选举出一个主服务器,继续为用户服务。
          如果服务器资源比较紧张,可以一台Master,一台salver,一台仲裁服务器(与Salver部署在一起),注意必须至少有3台服务器,
          如果只是一台Master,一台Slaver,假Master挂了,此时Salver不会主动成为Master,此时MongoDB对外只能提供read服务。
      4、可以启动一台延迟备份节点,指定主机同步N时间后,才同步,比如主机同步一个月后同步,如果主机版本出现重大问题,导致其他正常的备机
           也出现问题,此时至少可以恢复到一个月以前,当然也可以定期凌晨备份主节点。
      5、可以将备节点依次停机,以单机模式mongod&方式启动,进行维护,比如给某个集合创建索引,然后重新以mongod副本集方式启动。
           这意味着:
           1、通过维护,副本的数据实际上可以和主节点不一致.
           2、insert的时候因为索引导致速度变慢,这样实现读写分离,读有索引的备节点快,插没有索引的主节点也快。
       6、副本集成员除了主服务器外,其他的都不能读写,除非设置db.setSlaveOk()才可以读,但依然不可以写。
       7、[拓展阅读,写得很好!]:http://snoopyxdy.blog.163.com/blog/static/60117440201241694254441/   (写得很好)
          
二、副本集创建步骤:
      1、准备3台全新MongoDB服务器(MongoDB3.0最多支持50台slaver),1台为Master,2个为salver(或者1台salver,一台仲裁服务器):
      2、为每一台服务器创建超级管理员,并创建数据库hezx的管理员(账号、密码、对应的数据库必须保持一致)
          一、预先创建mongodb 超级管理员,该账号可以关闭mongod进程
               1)、#mongod&,此时直接启动mongo后台服务
               2)、#mongo   
               3)、#use admin  连接到admin数据库
                #db.createUser({user: "superAdmin",pwd: "admin123",roles: [ "root" ]})
 
          二、预先创建指定的 数据库管理员:use 
               1)、#mongod&,此时直接启动mongo后台服务
               2) #mongo
                     #use hezx
               3)、如下语句为hezx数据库创建了一个管理员。
                    #db.createUser({user: "admin",pwd: "admin123",roles: [{ role: "readWrite", db: "hezx" },{ role: "readWrite", db: "admin" },{ role: "readWrite", db: "local" }]})
            用户可以use admin 使用 超级管理员删除该用户db.system.users.remove({"user":"账号名称"})
  
      3、正式启动副本集服务, 依次在3台MongoDB的服务器上执行如下命令:
           启动副本集命令,副本集名称fubenji必须一致。
            mongod --auth --replSet fubenji --config /etc/mongodb.conf
 
  4、在其中一台Mongo服务器的shell上执行,这台机器将成为Master,其他机器则成为了salver:
   >use admin
   > db.auth("superAdmin","admin123")   使用超级管理员登陆
   > config={"_id" : "fubenji","version" : 1,"members" : [{ "_id" : 1,"host":"192.168.62.152:17018"},{ "_id" : 2,"host":"192.168.62.153:17018"},{ "_id" : 
   3,"host":"192.168.62.154:17018"}]}
   > rs.initiate(config)
 
   如果提示:"errmsg" : "'192.168.62.153:17018' has data already, cannot initiate set."  说明,153机器不是全新的Mongo服务器,请重新安装后启动。
   如果提示:{ "ok" : 1 } 说明副本集配置成功。
 
   4、rs.status() 可以查看副本集中成员的状态:哪个salver已经挂了。
        health:1 活着  0 挂了     stateStr:"PRIMARY" 主  "SECONDARY" 从
   5、rs.add("192.168.62.155:17018") 可以添加新的salver,最好是全新的mongodb服务,否则新加入的服务上的数据库会被清除掉。
        rs.add({"_id":4,"host":"192.168.62.155:17018","priority":0,"hidden":true,“votes”:0}) //可以传递复杂的参数进行加入,如没有投票权,且不能成为主节点
        rs.remove("192.168.62.155:17018")可以删除salver。
        rs.reconfig()可以重新配置副本集。
        rs.isMaster()查看谁主从关系
        rs.stepDown()把主节点降级为备节点.
        rs.freeze(100000)对主节点维护100秒,且其他节点不能成为主节点
        rs.freeze(0)可以把退位的主节点重新变为主节点。
        db.setSlaveOk(),通过这个命令后,非主服务器可以进行查询的操作,但不能进行写操作。该命令退出shell后就失效
 
   6、此时通过mongo shell连接mongod服务,可执行任何mongod操作
        fubenji:PRIMARY>use admin
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值