MongoDB 3.2.8 副本集搭建

记录一下,MongoDB的角色创建及配置,以便以后使用

简介

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

  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”);

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

时间: 2024-10-12 10:08:29

MongoDB 3.2.8 副本集搭建的相关文章

MongoDB副本集搭建及备份恢复

一.MongoDB副本集(repl set)介绍 早起版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主: 目前已经淘汰了master-slave模式,改为副本集,这种模式下有一个主(primary),和多个从(secondary),只读,支持给他们设置权重,当主宕掉后,权重最高的从切换为主: 在此架构中还可以建立一个仲裁(arbiter)的角色,它只负责裁决,而不存储数据 在此架构中读写数据都是在主上,要想实现负载均衡的

mongodb副本集搭建过程中的问题和解决技巧

在我以往的认知中,一个系统一旦正式上线,多半不会轻易的迁移服务器,尤其是那种涉及到多个关联应用,涉及到多台硬件服务器的系统,因为这种迁移将是牵一发而动全身的. 但是,却仍然有这种情况存在,就如我这几天主要负责的事,就是一个系统的全部服务器迁移中的部分机器迁移,还有一部分由别人负责. 这个系统涉及到flume数据采集,storm数据分析,rabbitmq消息分发,ehcache缓存提升系统性能,mongodb副本集存储数据,tomcat管理系统应用等,架构基本如下: 而这里我主要负责的是rabbi

【未完】mongodb安装+副本集搭建+数据导入

参考文档:1-centos6.5下MongoDB2.6.4安装配置记录 http://blog.csdn.net/ligaofeng/article/details/39374333 2-mongodb中的副本集搭建实践 http://www.cnblogs.com/visionwang/p/3290435.html

mongo副本集搭建及服务器复用方案

比较常见的mongodb副本集搭建是有:常规节点.数据副本.仲裁节点组成,也就是需要三台服务器组建.常规节点即数据的主存储节点,数据副本是主存储节点的从属节点,它定期去主节点获取更新日志来更新自己.仲裁节点的作用是为客户端指明连接方向(选择主还是选择从),主节点存活时连接主节点,主节点挂掉时连接从节点. 但上述方案有一个弊端,当仲裁节点挂掉以后,整个集群同样面临挂掉的危险. 第二种方案:一个主节点,两个从节点.从节点都定期去主节点获取更新日志.当主节点挂掉以后,会按优先级在两个从节点中选取一个当

Mongodb 4.2版本副本集配置

常见的复制集 线上环境常见的架构为副本集,可以理解为一主多从. 下图:1主2从 下图:一主一从一仲裁 服务器信息: 三台机器一样配置2核16G内存 存储盘100G "host" : "10.1.1.159:27020""host" : "10.1.1.77:27020""host" : "10.1.1.178:27020 1.我们在其中一台机器配置: [[email protected] ~]#

MongoDb的副本集搭建教程(个人操作笔记)

很多公司都在用MongoDb ,一直没有时间研究,最近好好的整了一下,做下笔记,直接上操作步骤,关于Mongodb的理论知识可以搜索其他资料,也可以联系我索取 mongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模式,主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性.而副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,并且解决了上面 第一个问题“主节点挂掉了,整个集群内会自动切换”.难怪mongoDB官方推荐使用这种模式.我们来看看mongoDB副本集的

Mongodb的Replica Set 副本集集群搭建

实验性的搭建一个集群做练手. 配置和环境: win10(本机)和linux(CentOs7)内网服务器各一台. Mongodb3.07 目标:Replica set 副本集结构,一个primary一个slave,实现读写分离的同步数据集群. 一.本机和内网服务器安装mongo 可参考我的另外两篇文章: Mongodb在windows和linux平台的安装配置(http://fykknd.blog.51cto.com/3175618/1716343) Mongodb权限管理(http://fykk

mongodb副本集搭建以及增减机器

1. replica set 每个副本集需要设置副本集名称. 在启动mongod时指定. 2. 搭建步骤 2.1 启动 首先启动mongod 启动时设置为副本集模式,并设置名称. 两种方式,通过配置文件,或命令行模式. 配置文件: # mongodb.conf replSet = replsetname 命令行模式: mongod --replSet "replsetname" 2.2 mongo shell 打开mongo shell $ ./bin/mongo 2.3 初始化 在m

mongodb 副本集搭建

mongodb的副本集模式较早前的master-slave模式有了很大的改进,由于之前的master-slave模式不支持主机宕机之后切换到从机,已经逐渐被淘汰.而现在官方推荐的副本集模式,支持多个节点并存,当主节点宕机后从权重最高的副节点开始,依次切换为主节点,非常好用,下面是笔者整理的一些搭建步骤和注意事项以及故障处理等等内容. 注意事项: 1.mongodb已经不再支持32位操作系统,因此一定要安装64位系统. 2.搭建副本集的过程中,一定要关闭防火墙,不论是selinux还是iptabl