复制

旧版的复制有同步和命令传播

同步:

如上图:

从向主发送sync,主服务器开始bgsave生成RBD并且将bgsave执行过程中执行的命令追加到AOF缓冲区。最后分别发送给从服务区

如果主服务器被修改了,那么他也需要使用命令传播传给从服务器

旧版本的复制主要缺陷在于断线后和初始其实是一个样的。

sync是一个非常耗费性能的命令

(1)他需要主服务器执行bgsave命令,耗费cpu,内存,磁盘

(2)网络传输,耗费网络资源

(3)从服务器执行还原操作,这将会阻塞服务器进程

新版本的psync命令具有完整重同步和部分重同步

完整就是最开始和sync其实是一样的

部分就是知识回复断线过程中的执行命令节省了很多资源

部分重同步实现:

(1)主从服务器的复制偏移量

(2)复制积压缓冲区

(3)服务器的运行ID

积压缓冲区的大小默认1MB,其实正常设置的大小是2*重连时间*每次发送的命令的大小

对于积压缓冲区中其实是偏移量对应着字符

如果发现偏移量存在,就执行部分重同步,否则执行完整冲同步

服务器运行ID其实就是server判断是初次还是不是初次,决定执行什么同步

 

复制:

1:设置从服务器中主服务器的IP和端口

(2)创建socket,connect

(3)发送ping

测试网络

测试相应是否可以

(4)身份验证

(5)发送端口

(6)同步

(7)命令传播

心跳检测:

(1)检测网络连接问题

(2)设置min-slaves选项

(3)检测命令丢失问题

原文地址:https://www.cnblogs.com/13224ACMer/p/7078669.html