一、步骤如下:(全量)
1.从服务器向主服务器发送同步命令 sync;
2.主数据库接收到同步命令后,会执行 bgsave 命令,在后台生成一个 rdb 文件,并使用一个缓冲区记录从现在开始执行的所有写命令;
3.当主服务器执行完 bgsave 命令后,主服务器会将 bgsave 命令生成的 rdb 文件发送给从服务器;
4.从服务器接收到这个 rdb 文件,然后加载到内存 ;之后主服务器会把刚刚在缓存区的命令同步过来,从服务器就会执行这些命名。(两边就一致了)
5.以上处理完之后,之后主数据库每执行一个写命令,都会将被执行的写命令发送给从数据库。
二、增量数据同步(部分复制)
自Redis 2.8版本起,增加了对部分复制的支持。如果从节点在断线重连后发现主节点还有保存的复制偏移量和复制积压缓冲区,那么只需要传输断线期间主节点新增的数据,即所谓的“增量同步”。(redis中数据都有各自编号,比如从节点数据到1012条,便从1013开始复制)从节点可以根据复制偏移量来请求丢失的数据,极大地提高了数据同步的效率和减少了网络传输的压力。
三、读写分离
通过主从同步机制,可以实现读写分离,主节点处理写操作,从节点处理读操作,以此分摊读取流量,提升系统性能。