主服务器:master
从服务器:slave
命令:SLAVEOF ip port (在slave中执行该命令,则将ip对应的服务器设置为主服务器。)
主从同步是实现步骤:(用于新的同步)
1、从服务器向主服务器发送SYNC命令。
2、主服务器收到命令后,执行BGSAVE命令,生产RDB文件,并使用一个缓冲区记录从现在开始主服务器执行的所有写命令。
3、当RDB文件生成完毕,主服务器将文件发送给从服务器,从服务器解析RDB文件,完成主从的同步状态。
4、主服务器将缓冲区记录的写命令,发送给从服务器,从服务器执行这些命令。最终完成服务器的主从同步(命令传播)。
部分同步的实现原理:(用于断线重链同步)
1、主从服务器的复制偏移量(偏移量相当于执行的步骤id,每次执行一个命令,就步进1)。
2、主服务器的写命令缓冲区(长度固定的队列,默认1MB,先进先出)。
3、服务器的运行ID(每个Redis都有对应的运行ID,运行ID在服务器运行的时候,自动生成。在首次同步时,从服务器会保存主服务器的ID)。
实现步骤:
1、断线重连后,从服务器向主服务器发送偏移量。主服务器根据从服务器的偏移量,在缓存区中寻找对于的值,如果找到则执行部分同步,如果没找到则执行全量同步。
2、根据偏移量从缓冲区找到对应的命令列表,然后发送给从服务器(命令传播)。
3、只有断线重连后,从服务器发生的主服务器ID与当前的主服务器ID一致时,才可以进行部分同步。否则进行全量同步。