旧版的复制有同步和命令传播
同步:
如上图:
从向主发送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)检测命令丢失问题