目录
redis 的主从复制
原理
配置
master 宕机的处理
注意事项
sentinel
sentinel出现所解决的问题
sentinel的原理
配置
运维
先说几个有用的命令 ,这个命令是将配置文件中 # 和空格行去除

这个命令是将文件中的 内容替换为知道的内容并放到另外一个配置文件中

redis 的主从复制
原理
复制的方式有两种 全量复制和部分复制,全量复制和部分复制
具体参见如下文档:主从复制原理
配置
################################# REPLICATION #################################
###在从服务器上进行该选项的配置,slaveof告诉他,她得master 是6379,并且其只是可读功能
slaveof 127.0.0.1 6379
slave-read-only yes
master 宕机的处理
master如果宕机的话我们需要执行命令 手动处理,两步操作
#在我们想要成为新master的slave节点执行 该命令,使其从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。
SLAVEOF NO ONE
###将slave从老的master指向新的master
slaveof ip port
注意事项
规避全量复制
- 第一次全量复制 无法规避 。 处理方式: 小主节点 不要让master的内存占用过大
- 节点运行id不匹配 主节点重启 (运行id变化)导致了从节点不知道master是因为故障问题还是什么,则认为数据是不安全的,则从master中全量同步数据 。处理方式:使用 故障转移 如 哨兵模式 或集群
- 复制积压缓冲区不足 如果发生网络抖动的话就会使用部分复制,如果偏移量没有在这个区间内,就只能使用全量复制了 。处理方式: 增大复制缓冲区配置 rel_backlog_size 如果不明白的话参考上面的主从复制原理
- 复制风暴 1 单个主节点复制风暴 问题 主节点重启,多从节点复制 处理方式: 更换复制拓扑结构 2 单机器复制风暴 处理方式: 将master分散在各个机器上面
sentinel
sentinel出现所解决的问题
通过上面master宕机处理方式我们知道,主从复制故障转移是不能够自动化的,需要手动故障转移,所以sentinel 应运而生。
sentinel的原理
这里有两个概念,一个是客观下线,一个是主观线下。参见如下文章:sentinel
配置
首先先根据主从复制所提到的方式进行 redis-server 的搭建,搭建一个 master slave 集群
然后进行 sentinel 的配置
port 26379
dir /develop/redis/data
####我们所要监控的节点的master节点 mymaster 为我们新定义命名空间 127.0.0.1 6379 为master 的ip地址和端口号 2 即两个sentinel 认为客观下线的话就进行故障转移
sentinel monitor mymaster 127.0.0.1 6379 2
#####失去连接多少时间则认为是下线
sentinel down-after-milliseconds mymaster 30000
####故障切换 并行同步的个数
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
之后启动sentinel 程序
/redis-3.0.5/bin/redis-sentinel ./sentinel-26381.conf
运维
主节点上线 通过手动触发故障转移 sentinel failover <mastername> 命令来实现
从节点上线 通过配置或执行命令slaveof即可,参考redis slave 节点的启动即可
sentinel 节点 参考sentinel 节点的启动即可
主节点下线 通过手动触发故障转移 ,即通过向sentinel 节点发送 sentinel failover <mastername> 命令来实现
从节点 直接在下即可,但是如果是有读写分离的话需要通知客户端,slave下线
sentinel 节点 同从节点一样
redis 客户端的sentinel 模式的实现机制
|