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

[经验分享] MongoDB 3.2.8 副本集搭建

[复制链接]

尚未签到

发表于 2017-12-15 22:32:18 | 显示全部楼层 |阅读模式
  记录一下,MongoDB的角色创建及配置,以便以后使用

简介
  Replica Set中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的。其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致
DSC0000.png

  Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。
  默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设置叫做Read Preference Modes,同时Java客户端提供了简单的配置方式,可以不必直接对数据库进行操作。
  仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。我开始也不相信必须要有仲裁节点,但是自己也试过没仲裁节点的话,主节点挂了备节点还是备节点,所以咱们还是需要它的。
  介绍完了集群方案,那么现在就开始搭建了。

副本集搭建
  1、准备配置文件
  

# mongod.conf  
# for documentation of all options, see:
  
#   http://docs.mongodb.org/manual/reference/configuration-options/
  

  
# where to write logging data.
  
systemLog:
  destination: file
  logAppend: true
  path: /home/dd/mongodb/logs/mongod.log #日志文件存放目录
  

  
# Where and how to store data.
  
storage:
  dbPath: /home/dd/mongodb/db #数据文件存放目录
  journal:
  enabled: true
  
#  engine:
  
#  mmapv1:
  
#  wiredTiger:
  

  
# how the process runs
  
processManagement:
  fork: true  #以守护程序的方式启用,即在后台运行
  pidFilePath: /home/dd/mongodb/mongod.pid  # location of pidfile
  

  
# network interfaces
  
net:
  port: 27017 #端口
  bindIp: 0.0.0.0  # Listen to local interface only, comment to listen on all interfaces.
  

  
#security:
  #authorization: enabled
  
#operationProfiling:
  

  
replication:
  replSetName: matchData1
  

  
#sharding:
  

  
## Enterprise-Only Options
  

  
#auditLog:
  

  
#snmp:
  

  红色标示出副本集的名称,副本集以此名称来识别是否属于同一个集群中
  2、启动准备好的一台Mongodb数据库
  

bin/mongod –f mongo.conf  

  3、连接到Mongo的admin库
  

bin/mongo ip:port/admin  

  4、增加用户
  

use admin  
db.createUser({user:"root",pwd:"root",roles:["root"]})
  
use ball
  
db.createUser(  
  {  
  user: "basket",  
  pwd: "basket",
  roles: [{role: "readWrite", db: "ballmatch"}]  
  }  
  
)
  

  5、生成keyFile文件
  在服务器上执行
  

openssl  rand  –base64 753  >  mongodb.keyfile  

  
chmod 600 keyFile
  

  将keyFile配置到Mongo配置文件,同时开启验证
  

security:  authorization: enabled
  keyFile:/home/dd/mongodb/mongodb.keyfile
  

  没有这个文件的机器就无法加入副本集,开启了keyFile,隐含就开启了auth,这个时候连接副本集就需要进行认证了
  6、重启Mongo服务
  7、拷贝到其他服务器,修改对应得目录
  8、添加副本集配置
  

cfg={_id:"matchData1", members:[{_id:0, host:'192.168.10.242:37017', priority:1},{_id:1, host:'192.168.10.242:37018', priority:2}, {_id:2, host:'192.168.10.242:37019', arbiterOnly:true}]};  
rs.initiate(cfg);
  

  cfg:变量名,任意起
  _id:”matchData1” 配置文件中配置的副本集名称
  host:Mongodb的ip+端口
  priority:优先级,数字越大优先级越高(0-100),优先级最高的会是初始的主节点,显示为PRIMARY。如果不想让某些成员在故障切换时成为primary,则将它们的优先级设为0(为0永不会成为主节点)
  当副本集切换失败时,可用如下代码重新配置:
  

rs.reconfig(cfg, {force:true});  

  9、副本集状态
  

rs.status()  

  
"health" : 1, #代表机器正常
  
"stateStr" : "PRIMARY",  #代表是主节点,可读写,其中有以下几下状态  
  
1. STARTUP:刚加入到复制集中,配置还未加载  
  
2. STARTUP2:配置已加载完,初始化;  
  
3. RECOVERING:正在恢复,不适用读  
  
4. ARBITER: 仲裁者  
  
5. DOWN:节点不可到达  
  
6. UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构
  
7. REMOVED:移除复制集  
  
8. ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态  
  
9. FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步  
  
10. PRIMARY:主节点  
  
11. SECONDARY:备份节点  
  

  10、维护
  前提是这个ip:port必须是使用了同一个relpSet名称的mongodb实例即可
添加副本,在登录到主节点下输入

  

rs.add("ip:port");   

  删除副本
  

rs.remove("ip:port");  

  新增仲裁节点
  

rs.addArb(“ip:port”);  

  注:新加入副本集的节点,会自动同步当前副本集已有权限及数据

运维网声明 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-424523-1-1.html 上篇帖子: Nosql简介 Redis,Memchche,MongoDb的区别 下篇帖子: MongoDB 3.4 分片 由副本集组成
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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