-
配置命令
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-主从同步
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...