Mac环境配置MongoDB副本集


上篇说了简单安装和使用MongoDB,现在大致说下MongoDB对事务的支持。

1.介绍

MongbDB事务是建立在Mongo副本集上的。所以要想支持MongoDB事务,就需要先配置Mongo副本集。

1. 复制集特点
  1. 主节点唯一:主节点唯一,但是不固定.(不确定因素的原因是,主节点挂了的话,会重新选举出一个新的主节点)
  2. 大多数原则:大多数原则,即1/2原则,一个复制集集群中,如果有大于等于1/2的节点不可用的话,那么整个进群将不可写,只可读(注:实际上应该是 投票权重的1/2
  3. 从库无法写入:从库无法写入,root权限也不行.这一点与mysql不同,mysql从库无法写入的原因是设置了readOnly
  4. 复制集可以自动进行容灾: 主节点服务不可用,会自动选举出新的主节点
2.复制集节点介绍
  1. 数据节点—主节点:主节点,负责数据的读写操作,并把写的信息记录到OpLog中(mongo隐藏的库local 的oplog集合)
  2. 数据节点—从节点:复制主节点的数据,备份容灾用,主节点挂掉,会重新成为新的主节点,从节点无法进行写操作 即使,拥有root权限也不行(不同于mysql)
  3. 投票节点:不负责数据的存储和复制,只负责投票
    注:理论上一个mongo复制集,可以有一个主节点,多个从节点,多个投票节点
3.复制集工作方式
  1. 客户端驱动指向mongo数据库,写的时候只会在主节点上进行,写的信息会记录在oplog中,从节点根据oplog把写入操作复制到从节点上.
  2. 复制集异步操作,刷盘下效率或者网络问题影响下,从节点会有一定的延迟,所以读操作默认也是指向主节点,如果对实时性要求不高,可以配置指向从节点,实现读写分离。
2. 配置

进入mongodb文件夹中,分别创建目录和启动实例配置。
1.创建三个文件夹 config,log,data来存放配置信息,日志,数据文件。
在这里插入图片描述
2. 然后分别在三个文件夹中创建rs1,rs2,rs3存放主节点和副本集的信息

cd config
mkdir rs1
mkdir rs2
mkdir rs3

在这里插入图片描述
3.在config的三个文件里分别创建启动实例配置,

cd config/rs1    #进入config/rs1目录
touch mongo.cfg  #创建配置文件
cd config/rs2    #进入config/rs2目录
touch mongo.cfg  #创建配置文件
cd config/rs3    #进入config/rs3目录
touch mongo.cfg  #创建配置文件
#rs1配置mongod.cfg
dbpath=/Users/xxx/software/mongodb/data/rs1        #mongo数据安装目录
logpath=/Users/xxx/software/mongodb/log/rs1.log    #日志打印的目录
journal=true                                             #数据是否故障恢复
port=27000                                               #端口
replSet=rs                                               #复制集名称
logappend=true                                           #复制集日志是以追加的方式进行
fork = true                                             #是否后台启动

Rs2配置mongod.cfg
dbpath=/Users/xxx/software/mongodb/data/rs2        
logpath=/Users/xxx/software/mongodb/log/rs2.log
journal=true
port=27001
replSet=rs
logappend=true
fork = true


Rs3配置mongod.cfg
dbpath=/Users/xxx/software/mongodb/data/rs3        
logpath=/Users/xxx/software/mongodb/log/rs3.log
journal=true
port=27002
replSet=rs
logappend=true
fork = true

4.启动实例

./mongod --config /Users/xxx/software/mongodb/config/rs1/mongod.cfg

./mongod --config /Users/xxx/software/mongodb/config/rs2/mongod.cfg

./mongod --config /Users/xxx/software/mongodb/config/rs3/mongod.cfg

#实例启动说明
./mongod  mongodb守护进程命令
--config  启动配置文件标志参数
/Users/xxx/software/mongodb/config/rs3/mongod.cfg 启动配置的目录

5.加入副本集集群

#进入到27000实例
#入口在mongodb的bin目录
./mongo -port 27000

#初始化一个副本集
rs.initiate()

#查看副本集状态命令
rs.conf()

#加入secondary节点
rs.add("localhost:27001")

#加入投票节点
rs.addArb("localhost:27002")

#查看副本集状态
rs.status()

#重要且必须, secondary节点允许读取操作在当前节点进行,否则从节点无法复制主节点的数据
#进入secondary实例
./mongo -port 27001
rs.slaveOk()

简单验证

#主节点
use test
db.createCollection('user')
db.user.insert({'name':'james'})

#从节点
use test
show collections
db.user.find()

问题:
在进入副本集查询是否配置成功的时候报错,查询失败。
解决方法:执行下 rs.slaveOk()。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值