redis多机数据库的实现

    两个redis服务器,让其中一个服务器变成另外一个服务器的从服务器,只要在从服务器上执行ALAVEOF命令,即可开始从主服务器同步数据到从服务器

整个同步过程会遇到两个问题

    1.同步操作是如何进行的。

     2.如果主服务器的数据库状态被修改,导致了主从服务器的数据库状态出现不一致,如果让主从服务器的数据库重新回到一致状态。

一、同步

     同步的步骤分为以下几步:

      1.从服务器向主服务器发送SYNC命令。

      2.收到SYNC命令的主服务器执行BGSAVE命令,在后台生成一个RDB文件,并使用一个缓冲区记录从现在开始执行的所有写命令,这就相当于增量产生的所有指令都放在缓冲区中,而之前的所有命令都会写入到RDB文件。

      3.当主服务器的BGSAVE命令执行完毕时,主服务器会将BGSAVE命令生成的RDB文件发送给从服务器,从服务器接收并载入这个RDB文件,将自己的数据库状态更新至主服务器执行BGSAVE命令前的数据库状态。

     4.主服务器记录在缓冲区里面的所有写命令发送给从服务器,从服务器执行这些命令,而且主服务器新添加的指令都会写入到缓冲区中一份,在不断的增量发送到从服务器的过程中,使得主从服务器变的完全一致。

     重要点:如果主从服务器已经完全同步了,此时主从之间的网络中断,此时主服务器会不停的接收新的指令,而从服务器无法得到主服务器的指令,造成了数据的不一致,当网络恢复以后,如果再次执行上面的SYNC过程,无疑太浪费资源,因此此处引入了部分重同步功能。部分重同步就是指PSYNC,从服务器向主服务器发送PSYNC命令,然后主服务器向从服务器发送+CONTINUE回复,从服务器接受到这个命令后知道后面开始发送增量命令了,从服务器会将网络中断后的所有命令一次性的发送给从服务器,从而达到主从一直状态,这期间的从服务器都是出于阻塞状态,不会单独接受客户端命令。下面是部分重同步的实现过程

    三个部分组成:

a、主从服务器的复制偏移量  主要记录两者的复制偏移 从而知道哪些需要复制 哪些不需要复制

b、主服务器的复制积压缓冲区

c、服务器的运行ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值