首页 > 其他分享 >复制集机制及原理

复制集机制及原理

时间:2023-11-10 10:11:38浏览次数:35  
标签:结点 投票权 选举 复制 投票 原理 机制 数据

复制集的作用

  1. 数据分发:将数据从一个区域复制到另一个区域
  2. 读写分离:读写折分到不同的结点
  3. 异地灾备:中心结点故障时自动转移到灾备结点

典型复制集结构

  1. 由3个及以上据有投票权的结算构成
  2. 一个主结点,接受数据写入及进行投票
  3. 二个及以上从节点,从主结点读取数据及进行投票
  4. 不推荐使用2个数据结点+1个投票结点的形式

image.png

数据是如何复制的

  1. 主结点产生数据时(插入、修改、删除等等),向oplog数据集写入变动记录
  2. 从结点检测主结点oplog数据集,有变动时,读取变动到从结点,然后在从节点复现变动的所有操作。

image.png

通过选举完成数据恢复

  1. 具有投票权的结点两两之间会发送心跳信息,2秒一次
  2. 5次检测不生功时,认为结点失效
  3. 如果失效的是主结点,则从结点会选举出新的主结点
  4. 如是失效的是比结点,不会发起选举
  5. 选举是基于RAFT一致性算法实现,大多数投票结点存活的时候,才会发起选举
  6. 一个集群最多可以有50个结点,但只有7个有投票权的结点

image.png

影响选举的因素

  1. 必须有大多数的投票结点存活
  2. 被选举为主结点的必备条件

    1. 需要与大多数的结点连通
    2. 需要有较新的oplog
    3. 需要有较高的优选级(这个可通过参数配置)

复制结点常见选项

  1. 投票权(v参数):有此参数可以参与投票
  2. 优先级(priority参数):优先级越高,成为主结点的可能性越高。为0时,永远不会成为主结点。
  3. 隐藏(hidden参数):应用不能访问,但可以用来复制数据,可以参与投票,且优先级必须为0,即永远不成为主结点
  4. 延迟(slaveRelay参数):单位为秒,控制从主结点复制数据的时间延迟,否则是即时复制。将从结点更改较高延迟,可以在主结点数据删除或更改时,有回退数据的机会。

image.png

复制集注意事项

  1. 硬件

    1. 无论主从结点,建议采用一样的硬件配置
    2. 各结点之间保证硬件的独立,避免硬件故障时影响过多结点
  2. 软件

    1. 保证各结点间软件版本一致
  3. 增加从节点时,不会提升主结点性能,但可以分流读。建议采用分片方式处理性能的问题。

标签:结点,投票权,选举,复制,投票,原理,机制,数据
From: https://www.cnblogs.com/lovezhr/p/17823467.html

相关文章

  • 浏览器的垃圾回收机制
    浏览器在存储数据时会分配内存,如果只分配不回收那内存肯定是不够用的。那怎样的内存会被回收呢,那些被视为垃圾的(即没用了的)内存就是需要被清除的。浏览器的两种垃圾回收方法:引用计数、标记清除引用计数:统计变量被引用的次数,统计次数为0的被回收。(缺陷:对象间的相互引用无法被清除)......
  • Java JNI(Java Native Interface)攻击原理研究
    一、JavaJNI简介0x1:JNI是什么JNI(JavaNativeInterface,Java本地接口)是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用/或库,也可以被其他程序调用。本地程序一般是用其它语言(C、C++或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序。0x2:为什么需要JNI......
  • 通过一道题目带你深入了解WAF特性、PHP超级打印函数、ASCII码chr()对应表等原理[RoarC
    题目环境:<br/>依此输入以下内容并查看回显结果1+11'index.phpls<br/><br/>到这里没思路了F12查看源代码<br/>一定要仔细看啊,差点没找到,笑哭访问calc.php文件<br/>果然有点东西PHP代码审计error_reporting(0);关闭错误报告通过GET方式传参的参数numsho......
  • 计算机组成原理之指令
    引言关于riscv操作数32个寄存器|X0~X31|快速定位数据。在riscv中,只对寄存器中的数据执行算术运算2^61个存储字|只能被数据传输指令访问。riscv体系采用的是字节寻址。一个寄存器是8bytes,64位(doubleword)每次取的最小单位是一个byte注意:当函数参数大于8个的时候,会占用内......
  • python的垃圾回收机制
    python解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(垃圾)就应该将其占用的内存回收从逻辑层面分析,定义变量将变量值存起来的目的是为了以后取出来使用,而取得变量值需要通过......
  • 使用 ADD 命令将目录复制到另一个目录。
    内容来自DOChttps://q.houxu6.top/?s=使用ADD命令将目录复制到另一个目录。我已阅读http://docs.docker.com/engine/reference/builder/#add,但是我遇到了一个问题。我想将本地目录go复制到Docker的/usr/local/目录下。我尝试了以下命令:ADDgo/usr/local/以及:......
  • UE5 多人联机 - 网络复制相关概念理解
    相关概念理解:参考视频:[搬运][中文字幕]虚幻引擎中的多人联机:如何理解网络复制    ......
  • 通过 MySQL Shell 8.2.0 工具进行数据复制/迁移
    一、通过sysbench创造测试数据1、创造测试数据[root@hankyoondb_tools]#sysbench--mysql-user=root--mysql-password='xxxxxx'--mysql-socket=/data/mysql/3307/mysql.sock/usr/share/sysbench/oltp_common.lua--tables=10--table_size=1000000preparesysbench1.0.1......
  • 安卓系统执行APK程序为什么需要ART或者Dalvik虚拟,原理是什么
    安卓系统执行APK程序需要ART(AndroidRuntime)或者以前的Dalvik虚拟机,主要是因为安卓应用大多数是用Java语言编写的,而Java是一种需要虚拟机来执行的语言。下面我会分别解释虚拟机的原理和为什么需要它们,以及提供一个生活中的例子来帮助理解。 ###虚拟机的原理: 1......
  • java为什么能在安卓环境下运行,如何运行的,原理是什么,详细!
    Java在Android环境下可以运行是因为Android提供了一个为移动设备优化的虚拟机——Dalvik虚拟机(在Android4.4版本后,被Android运行时环境ART所取代),它使用专门为Android优化的字节码。这个虚拟机与Java的运行机制有所不同,但是基本原理类似。以下是详细的解释:1.Java代码编译......