§1 主从复制
§1.1 流程
主从复制流程
- 全量复制
- 从节点连接主节点后,向主节点发送数据同步消息
- 主节点收到同步消息后,对主节点进行持久化
- 将生成的 rdb 文件发送给从节点
- 从节点通过此文件进行恢复
- 增量复制
- 主节点进行写操作后,与从节点进行同步
多级主从复制
从节点依然可以作为另一些从节点的主节点,如下图
极端情况,至少技术上可以配置为链路模式
复制延时问题
写操作是集中在主节点上的,主节点的数据同步到从节点会有延迟
- 当系统繁忙时,延时问题会加剧
- 从节点数量较多时,延时问题会加剧
- 多级主从复制时,延时问题会加剧
- 读操作并发量较大时,延时问题的后果会加剧
宕机问题
从节点宕机
- 重写启动后需要重新加入集群
slaveof 192.168.3.11 6379
- 重新加入集群时会从主节点同步数据
主节点宕机
- 从节点不会主动变为主节点
- 通过
info replication
查看master_link_status:down
§1.2 示例
以一主二从为例
创建集群目录
mkdir /redis/cluster01
创建所有节点的配置文件
主节点 6379
vi redis6379.conf
# inclue 引入原始配置文件
# 相当于用原始配置文件作为模板,然后进行增量配置
include /etc/redis/redis.conf
pidfile /var/run/redis_6379.pid
prot 6379
dbfilename dump6379.rdb
从节点 6380
vi redis6380.conf
include /etc/redis/redis.conf
pidfile /var/run/redis_6380.pid
prot 6380
dbfilename dump6380.rdb
# 主节点设了密码的话增加配置
masterauth 密码
从节点 6381
vi redis6381.conf
include /etc/redis/redis.conf
pidfile /var/run/redis_6381.pid
prot 6381
dbfilename dump6381.rdb
# 主节点设了密码的话增加配置
masterauth 密码
启动三个节点
redis-server redis6379.conf
redis-server redis6380.conf
redis-server redis6381.conf
建立集群
从节点( 6380、6381 )上执行 slaveof 192.168.3.11 6379
从节点的独立
可以使用 slaveof no one
使当前节点脱离与主节点的关系,也成为主节点
§2 哨兵模式
作用
可以解决主从复制模式下的宕机问题
哨兵配置
创建 sentinel.conf
sentinel monitor alias ip port count
- alias 被监控对象别名
- ip 监控主节点ip
- port 监控主节点端口
- count 同意迁移的哨兵的最小数量
启动哨兵
redis-sentinel sentinel.conf
默认端口号 26379
哨兵模式下的宕机
主节点宕机
- 从节点自动成为主节点
- 原主节点作为新主节点的从节点(有没有重启都是)
哨兵模式下选主策略
按选择条件的优先级进行排列,顺次比较各个从节点的
- 优先级高 (值越小越高)
优先级参考 中间件 | Redis - [安装 & 配置] - 偏移量大
即从原主机同步数据同步的最全的 - runid 小
redis 实例启动时随机生成的