MongoDB(二)主从复制以及副本集的配置和使用

**   Mongodb是支持数据之间的相互复制的,具体存在两种方式,一种就是主从复制,而另一种是副本集,两者之间既有相同点,也有不同点,我们将通过实例进行讲解。

  主从复制

      概念讲解
      什么是主从复制?之前我们接触过mysql,知道数据库的双击备份,也就是主节点当掉之后,从节点可以接替主节点继续工作,这种模式在一定肯定是优于单节点,比单节点增加了一份可靠性。
      也即是一主一从或者是一主多从。如下图所示:
这里写图片描述
      在主从复制模式中,有一点我们必须明确:
      在数据库的集群中,哪个是主服务器,在集群中主服务器只有一台。
      从服务器必须知道自己的主服务器,也就是知道自己要读取数据的源头。
      我们可以使用 –master指定主服务器,-slave指定从服务器以及-source指定数据源
      对于像主从复制的这种,我们应该指定具体的ip和端口号,当然如果是在不同的机器上的话,是不需要的,但是在同一台机器上,使用不同的端口达到模拟多台机器的效果,故而我们是需要指定具体的端口号的
      我们以在一台机器上为例,进行测试实验,因为有多台机器或者多个端口,为了便于启动和区分,我们采用脚本文件进行处理。
      配置使用
      首先:配置相关的脚本文件
不同于单台服务器的启动,对于一台机器上的多个端口,我们需要做的是指定相关的参数以及参数值
      比如数据存储文件的路径,端口号,绑定的ip,以及服务器的类型是master还是slave,如果是slave需要指定source
这里写图片描述
      封装为六个文件
      其中mongodb~.conf中封装的是启动服务器的配置信息
      这是主服务器的配置:
这里写图片描述
      db 数据文件保存地址
      port 服务器端口号
      bind_ip 绑定的主机ip
      master 标识是主服务器
      从服务器的配置:
这里写图片描述
      从服务器中多的是一个指定了数据源
      那么如何启动服务和访问服务的客户端呢?
      启动服务:
      在mongodbServer27020中写上:
      mongod –config 27020.conf #conf 程序配置文件
      即可,同理从服务器只需要更改对于的conf配置文件即可
      启动客户端:
mongo.exe 127.0.0.1:27020
      启动服务,指定对应的启动的端口,当然从服务器只是需要更改端口号即可。
      至此配置完毕,这样的好处是什么呢。不用对于每个机器的启动还得手动输入对于的端口号,指定ip以及相关的参数等等,省去了很多配置的麻烦。
      启动相应的脚本
      分别启动主服务器的服务端和客户端以及从服务器的服务端和客户端
这里写图片描述
      从服务器的服务端
这里写图片描述
      检测数据是否同步
      此时我们使用客户端验证是否数据可以进行同步:
      在主服务器的客户端创建一个数据库,创建一个集合,并且添加一条数据
      在从服务器的客户端进行访问的时候出现:
“errmsg” : “not master and slaveOk=false”, “code” : 13435 }
      首先这是正常的,因为SECONDARY是不允许读写的。
      解决方案是在从服务器客户端执行:
db.getMongo().setSlaveOk()
      此时我们再看是可以访问的
这里写图片描述
      当Mongodb上的数据库内没有数据存储的时候,此时使用show dbs命令是不显示数据库的名字的。当我们插入了一条数据,数据库中有内容的时候,此时才会出现数据库的名字,详见上图
这里写图片描述
      此时我们发现在主服务器的客户端执行的插入操作,在从服务器的客户端也发现了插入的数据,这样就实现了主从同步
      此外需要我们注意的是:我们是无法在slave进行数据插入的,当我们试图插入的时候,此时提示:
这里写图片描述
      至此主从复制完成
      但是主从复制存在什么缺点呢?主节点挂了之后是无法自动切换的,只能是手动切换
,并且主节点的写压力也会比较大,从节点上的数据每次都是从主节点上面的全量拷贝,读压力大等。至此我们再来看一下另一种方式:副本集。
**

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值