复制

作者: 茶还是咖啡 | 来源:发表于2018-05-23 15:50 被阅读0次

复制场合

  1. 初次复制:从服务器以前没有复制过任何服务器或者从服务器当前要复制的主服务器和上一次复制的服务器不一致。
  2. 断线后复制:处于命令传播状态阶段因为网络原因中断了复制,从服务器在此连接主服务器,继续复制主服务器。

旧版复制

  1. 同步操作作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态。
  2. 命令传播使得主从服务器的状态达到一致状态

同步

image.png
  1. 从服务器向主服务器发送SYNC命令。
  2. 主服务器收到SYNC命令后执行BGSAVE在后台生成一个RDB文件,并使用一个缓冲区记录从现在开始执行的所有写命令。
  3. 当主服务器BGSAVE执行完后,主服务器将生成的RDB文件发送给从服务器,从服务器利用RDB文件更新自己的数据库数据。
  4. 主服务器将缓冲区重所有的命令发送给从服务器,从服务器执行完后指令后达到主从一致状态。

命令传播

为了让从服务器再次回到一致状态,主服务器需要对从服务器执行命令传播操作,主服务器会将自己执行的所有写操作发送给从服务器。

旧版缺陷

如果时由于网络中断从服务器再次复制主服务器,因为不知道复制的进度,所以会导致开始复制,造成资源的大量浪费。影响数据库的性能。

新版复制

新版使用PSYNC替代PSYNC来执行复制时的同步操作。
PSYNC有两种模式:
 完成重同步:和SYNC执行的步骤一样。
 部分重同步:记录了复制的进度,断线重连后只需继续上一次的进度即可。


image.png

具体实现

部分重同步
部分重同步的构成:

  1. 主服务器的复制偏移量,从服务器的复制偏移量
    主服务器每次像从服务器传播N个字节数据,就将自己的复制偏移量的值添加N
    从服务器每次收到主服务器传播来的N个字节数据后,就将自己的复制偏移量加上N(比较像TCP)
  2. 主服务器的复制积压缓存
    是由主服务器维护的一个固定长度的先进先出队列,默认大小为1MB。
    断线重连后,如果从服务器发来的偏移量仍然在缓冲区中,执行部分重同步,如果不在缓冲区中,执行完整重同步。
    缓冲区的大小可以通过配置文件进行设置:
    大小=断线重连数据库的平均时间*主服务器平均每秒写执行的数据量
    一般设值为这个大小的2倍就可以保证大多数情况下使用部分重同步。
  3. 服务器的运行ID
    主服务器在第一次复制的时候会将自己的ID发送给从服务器,从服务器会将ID进行保存,断线重连后,从服务器会将自己保存的ID发给主服务器,和主服务器匹配之后,才会考虑是否执行部分重同步,否则执行完整重同步。

相关文章

  • Copy

    copy 复制 浅复制:指针的复制(地址的复制) 深复制:对象内容的复制 Foundion的基本对象复制 基本对象...

  • Redis 复制原理

    目录: 复制过程 数据间的同步 全量复制 部分复制 心跳 异步复制 复制原理 1. 复制过程 复制的过程步骤如下:...

  • iOS常见面试题

    1、浅复制和深复制的区别 浅层复制:只复制指向对象的指针,而不复制引用对象本身。 深层复制:复制引用对象本身。 意...

  • objective深浅拷贝

    浅复制和深复制的区别? 浅复制:只复制指向对象的指针,而不复制引用对象本身。 深复制:复制引用对象本身。 意思就是...

  • Redis——主从复制

    主从复制 : 主从复制实现:slaveof配置文件:slave ip port 复制方式全量复制全量复制全量复制开...

  • Object-C 基础知识

    --------------------| 浅复制和深复制区别 |------------------- 浅复制(...

  • iOS面试题:浅复制和深复制的区别?

    浅层复制:只复制指向对象的指针,而不复制引用对象本身。深层复制:复制引用对象本身。意思就是说我有个 A 对象,复制...

  • 为什么在头条上不容易复制

    在头条写一篇文章,复制了半天才复制一段,再复制又无法复制了,过了好长时间又去复制才能复制下来,以前复制没有这样,今...

  • 深拷贝和浅拷贝

    深复制和浅复制 1、概述 对象拷贝有两种方式:浅复制和深复制。 浅复制:拷贝指针 深复制:拷贝整个对象 2、深浅复...

  • OC属性常用关键字

    含义: copy 复制内容(深复制),如果调用copy的是数组,则为指针复制(浅复制),仅仅复制子元素的指针。 @...

网友评论

    本文标题:复制

    本文链接:https://www.haomeiwen.com/subject/zvirjftx.html