Mongo服务器集群配置——主从复制

Wesley13
• 阅读 856

MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性;复制还允许您从硬件故障和服务中断中恢复数据。

MongoDB复制原理

mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

  • mongodb各个节点常见的搭配方式为:一主一从、一主多从。

  • 主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致

  • 默认读写操作都指向主节点。

  • 主节点是唯一的,但不固定。 
    Mongo服务器集群配置——主从复制

    主从复制实践

    开启一个mongodb实例可以直接通过shell命令也可以通过配置文件开启,在之前的文章中已经介绍shell命令开启,本文我们将通过config文件的方式开启。

    • 语法格式:mongod -f config.cnf

1、接下来我们需要配置三份配置文件,10001,10002,10003;之中10001作为主库,其他的为从库;

  1. <--10001
  2. dbpath=D:\MongoData\10001\db
  3. logpath=D:\MongoData\10001\log\MongoDB.log
  4. bind_ip=127.0.0.1
  5. port=10001
  6. master=true--主节点
  7. <--10002
  8. dbpath=D:\MongoData\10002\db
  9. logpath=D:\MongoData\10002\log\MongoDB.log
  10. bind_ip=127.0.0.1
  11. port=10002
  12. slave=true--从节点
  13. source=127.0.0.1:10001--从对应的主节点复制数据
  14. <--10003
  15. dbpath=D:\MongoData\10003\db
  16. logpath=D:\MongoData\10003\log\MongoDB.log
  17. bind_ip=127.0.0.1
  18. port=10003
  19. slave=true--从节点
  20. --10003我们没有这只source,待会儿我们手动设置

2、开启mongodb实例 
上文中已经告诉大家怎么把mongodb实例总成windows服务来开启;我们将创建startup.bat(开启服务)

  1. <--startup.bat
  2. mongod -f D:\MongoData\10001\conf\10001.conf --install --serviceName MongoDB --serviceDisplayName MongoDB10001
  3. NET START MongoDB
  4. pause
  5. --注意用到-install命令,conf文件必须是绝对路径。

3、测试 
从库10002 第一次查询 person没有记录,当主库10001person插入一条数据后,再去查询 从库成功读取到数据,说明我们的主从复制完全没有问题。

  • 注意 
    MongoDb的“not master and slaveok=false”错误及解决方法 
    在SECONDARY查询出发现如下错误: 
    SECONDARY> show collections; 
    Sat Aug 4 15:29:00 uncaught exception: error: { "$err" : "not master and slaveok=false", "code" : 13435 } 
    这是正常的,因为SECONDARY是不允许读写的,如果非要解决,方法如下: 
    SECONDARY> rs.slaveOk();
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Peter20 Peter20
3年前
redis的三种集群方式
redis有三种集群方式:主从复制,哨兵模式和集群。1.主从复制主从复制原理:从服务器连接主服务器,发送SYNC命令;主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;从服务器收到
Wesley13 Wesley13
3年前
MongoDB——主从复制&副本集
MongoDB——主从复制&副本集博客分类:javamongodb前面我说到了,MongoDB数据库支持服务器之间的数据复制。支持主从模式及服务器之间的相互复制。目的当然是实现负载均衡与故障恢复。Mongo中内置了两种技术:主从复制、副本集。下面就简单介绍这两种模式的配置。一、   主从复制主从复制是一个简单的数
Stella981 Stella981
3年前
Mongodb3.4 复制集及分片配置
复制技术:mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。mongodb各个节点常见的搭配方式为:一主一从、一主多从。主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。!MongoD
Wesley13 Wesley13
3年前
MongoDB副本集部署
简述:副本集合(ReplicaSets),是一个基于主/从复制机制的复制功能,但增加了自动故障转移和恢复特性。一个集群最多可以支持7个服务器,并且任意节点都可以是主节点。所有的写操作都被分发到主节点,而读操作可以在任何节点上进行。环境:CentOS5.5x64md0110.0.0.11md0210.0.0.12
Stella981 Stella981
3年前
Linux Centos下MySQL主从Replication同步配置(一主一从)
MySQL主从复制概念MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。 !(https://img2018.cnblogs.c
Stella981 Stella981
3年前
Chapter 16 Replication(MySQL 5.7)
Chapter16Replication复制允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。默认情况下复制是异步的;从服务器不需要永久连接就可以从主服务器接收更新。根据配置,您可以复制所有数据库、选定的数据库,甚至是选定的表。复制的优点包括:
Wesley13 Wesley13
3年前
MongoDB 的分片技术
   在MongoDB中分片技术也就是集群。需要1台配置服务器配置各个节点的配置信息,1台路由服务器来知道每一台节点都在哪个地方并给用户提供各个节点数据的访问功能,还有多台节点服务器,存储节点数据。   当前我有三台机器192.168.0.114,192.168.0.115,192.168.0.116,规划如下:  搭建配置服务器:192.1
Wesley13 Wesley13
3年前
mysql数据库备份之主从同步配置
主从同步意义?主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据