福哥答案2020-07-21:

1.从服务发送一个sync同步命令给主服务要求全量同步。
2.主服务接收到从服务的sync同步命令时,会fork一个子进程后台执行bgsave命令(非阻塞)快照保存,生成RDB文件,并将RDB文件发送给从服务。
3.从服务再将接收到的RDB文件载入自己的redis内存。
4.待从服务将RDB载入完成后,主服务再将缓冲区所有写命令发送给从服务。
5.从服务在将主服务所有的写命令载入内存从而实现数据的完整同步。
6.从服务下次在需要同步数据时只需要发送自己的offset位置(相当于MySQL binlog的位置)即可,只同步新增加的数据,再不需要全量同步。