Redis都是主节点。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点,复制的数据流是单向的。
作用: 1.将一直备份主节点数据,当主节点挂掉,可以顶替主提供服务 2.将扩展主节点的读能力,做读写分离,分担压力
问题: 主故障,需要手动切换到从节点进行读写 主节点的存储能力,读写能力都受到单机限制,始终是一个单机
一主一从,如果要高并发,可以在从节点开启持久化,主节点不开启。但要注意主节点如果死掉,不要自动重启,否则数据是空的,会让从也同步为空。
一主多从,用于写少读多场景。不过如果是写多的就不适合了,那会导致将一个写操作同步到多个从,消耗带宽。
树状图,用于有钱的公司。一主2从,其中一个从又当主,下面又有2从。这样多级复制,多写并发高也没问题。
slaveof本身是异步命令,节点只保存主节点信息后返回,后续复制流程在节点内部异步执行。主从节点复制成功建立后,可以使用info replication命令查看复制相关状态, 如下所示。
切换主从会清空从节点所有数据,从节点应配置为只读。主从复制间是异步的,主接到请求完成和复制给从是不相关的。主从要求配置一致,例如内存之类的。
过程:
偏移量
info replication
命令中master_repl_offset
字段显示info relication
中的slave_repl_offset
中可以看到从写入的字节长度。缓冲区
主节点在写入时除了发送给从,自己执行,还将添加到复制缓冲区,用于数据有问题进行补救。先进先出,只保存最新的几个。
info replication
repl_backlog_active:1
#开启复制缓冲区
repl_backlog_size:1048576
#缓冲区最大长度
repl_backlog_first_byte_offset:7479
#起始偏移量,计算当前缓冲区可用范围
repl_backlog_histlen:1048576
#已保存数据的有效长度。
id节点
每个节点分配一个40位的运行id,用于区分。重启后id号将变化,导致从节点全量复制。可以在重启后用redis-cli debug reload
命令加载RDB,使得id号不变
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。