-
配置命令
SLAVEOF ip port 即可完成主从同步的设置
-
同步过程
-
初次同步
1.从服务器想主服务器发送SYNC命令
2.主服务器执行BGSAVE,生成RDB文件(快照保存),并使用一个缓冲区记录从BGSAVE开始的所有写命令(记录增量)
3.主服务器将RDB文件传输给从服务器,从服务器加载RDB文件
4.主服务器将缓冲区的写命令发送给从服务器
5.主服务器将同步之后的写命令,进行命令传播(command propagate)保持主从一致
-
断线重连同步
1.复制积压缓冲区(replication backlog)中如果还存在断线之后从服务器的复制偏移量( replication offset) 的信息,主服务器将从服务器复制偏移量之后的命令重新传播给该从服务器, 即可省去初次同步中1~4的步骤
-
-
细节
- 服务器运行ID(run ID): 初次复制会将主服务器的运行ID保存起来,断线重连之后如果保存的运行ID和主服务器的运行ID不一致,则执行完整同步操作(初次同步)
- 心跳检测: 从服务器默认每秒一次向主服务器发送当前的复制偏移量
- min-slaves: 当从服务器数量少于xx个或者xx个从服务器延迟(lag)值大于等于yy秒时,主服务器将拒绝执行写命令
-
总结
Redis的主从同步就是快照+增量的套路.关键词:复制偏移量, 复制积压缓冲区(对命令传播做了短暂的持久化),命令传播, 心跳检测
Redis-主从同步
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。