ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

基于docker的MongoDB复制(副本集)

2021-04-27 14:01:40  阅读:194  来源: 互联网

标签:副本 MongoDB 27017 192.168 mongodb docker 节点


MongoDB复制(副本集)

MongoDB复制是将数据同步在多个服务器的过程。

复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

复制还允许您从硬件故障和服务中断中恢复数据。

什么是复制?

  • 保障数据的安全性
  • 数据高可用性 (24*7)
  • 灾难恢复
  • 无需停机维护(如备份,重建索引,压缩)
  • 分布式读取数据

MongoDB复制原理

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

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

我们采用 一主一从一仲裁者模式。

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

MongoDB复制结构图如下所示:

img

24105

MongoDB副本集设置

  1. 准备三台服务器(linux docker环境)

    地址 角色
    192.168.1.1 Primary
    192.168.1.2 Secondary
    192.168.1.3 Arbiter
  2. 分别创建MongoDB

    docker run --name mongodb_test -p 27017:27017 -v /mountdir/mongodb_test/configdb:/data/configdb/ -v /mountdir/mongodb_test/db/:/data/db/ -d mongo:4.4 --replSet "rs0"
    
  3. 进入MongoDB所在容器

    docker exec -it mongodb_test /bin/bash
    
  4. 进入mongodb shell

    mongo
    
  5. 初始化副本集

    var config={_id:"rs0",members:[{_id:0,host:"192.168.1.1:27017"},{_id:1,host:"192.168.1.2:27017"}, {_id:2,host:"192.168.1.3:27017",arbiterOnly:true}]};
    rs.initiate(config);
    
  6. 可能用到的命令

    ##查看副本集状态
    rs.status();
    ##向副本集添加成员
    rs.add("host:port");
    ##移除副本集成员
    rs.remove("host:port");
    

    更多副本集相关操作,请参考官方文档

  7. 注意事项:

    初始化副本集前,请确保,mongodb版本是一致的,并且彼此间网络互通。

C#使用副本集

连接串直接配置Primary和Secondary格式如下:

mongodb://[host1]:[prot1],[host2]:[prot2]
mongodb://192.168.1.1:27017,192.168.1.2:27017

标签:副本,MongoDB,27017,192.168,mongodb,docker,节点
来源: https://www.cnblogs.com/Yuuuuu/p/14708682.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有