Redis主从自动切换原理

Stella981
• 阅读 871

Redis主从自动切换原理

  • 复制原理

    1:当一个从数据库启动时,会向主数据库发送sync命令, 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来 3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。 4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。

    redis是通过RDB持久化文件和redis缓存命令来时间主从复制。一般在建立主从关系时,一次同步会进行复制初始化。 以上过程为复制初始化,复制初始化结束后,主数据库每当受到写命令时,就会将命令同步给从数据库,保证主从数据一致性。

  • 哨兵

    哨兵的作用就是监视redis节点的运行状态。 1.监控主数据库和从数据库是否能够正常运行 2.主数据库出现故障时自动将从数据库转换为主数据库。 如果没有哨兵,当主节点挂了后整个就挂了,只能去手动重新启动 监控: Sentinel会不断的检查主服务器和从服务器是否正常运行。 自动故障转移: 当超过down-after-millisecond时间后,如果节点未回复,则哨兵认为主观下线。 主观下线表示当前哨兵认为该节点已经下面 这时候就要询问其他哨兵节点是否认为该主节点是主观下线,当达到指定数量时,哨兵就会认为是客观下线 当主节点客观下线时就需要进行主从切换,主从切换的步骤为: 配置提供者: 在Redis Sentinel模式下,客户端应用在初始化时连接的是Sentinel节点集合,从中获取主节点的信息。

  • 集群结构

IP地址

主机名称

角色

192.168.1.11:6379

redis-master

主节点

192.168.1.12:6379

redis-slave1

从节点

192.168.1.13:6379

redis-slave2

从节点

192.168.1.11:26379

redis-master

sentinel1

192.168.1.12:26379

redis-slave1

sentinel2

192.168.1.13:26379

redis-slave2

sentinel3

  • slave配置(1.12和1.13一样)

    replicaof 192.168.56.11 6379 # 配置为master的从 masterauth 123456 # 配置主的密码

  • sentinel配置

    Redis主的别名, IP, 端口,

    这里的2指的是需要至少2个Sentinel认为主Redis挂了才最终会采取下一步行为

    sentinel monitor redis-master 192.168.1.11:6379 6379 2

    如果mymaster 30秒内没有响应,则认为其主观失效,单位毫秒

    sentinel down-after-milliseconds redis-master 30000

    如果master重新选出来后,其它slave节点能同时并行从新master同步数据的台数有多少个

    sentinel parallel-syncs redis-master 1

    该参数指定一个时间段,在该时间段内没有实现故障转移成功,则会再一次发起故障转移的操作,单位毫秒

    sentinel failover-timeout redis-master 180000、

    不允许使用sentinel SET设置notification-script和client-reconfig-script。默认no

    sentinel deny-scripts-reconfig yes

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Java修道之路,问鼎巅峰,我辈代码修仙法力齐天
<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav
Peter20 Peter20
3年前
redis的三种集群方式
redis有三种集群方式:主从复制,哨兵模式和集群。1.主从复制主从复制原理:从服务器连接主服务器,发送SYNC命令;主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;从服务器收到
Peter20 Peter20
3年前
Redis集群详解
Redis集群详解Redis有三种集群模式,分别是:主从模式Sentinel模式Cluster模式三种集群模式各有特点,关于Redis介绍可以参考这里:Redis官网:https://redis.io/,最新版本5.0.4主从模式主从模式介绍主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(sl
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
2年前
Mysql数据库 主从复制的作用原理
主从的作用1.实时灾备:一台主数据库宕机了,启用从数据库,用于故障切换2.读写分离:主服务器只用于写操作,从服务器只用于读取,支持了更大的并发3.备份:可以解决数据丢失的问题,避免影响业务主从原理1、主库接收到更新命令,执行更新操作,生成binlog2、从库sal
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
2年前
Redis Linux 安装
【搜藏】RedisReplication工作原理:1):Slave启动后,无论是第一次连接还是重连到Master,它都会主动发出一个SYNC命令2):当Master收到SYNC命令之后,将会执行BGSAVE(后台存盘进程),即在后台保存数据到磁盘(rdb快照文件),同时收集所有新收到的写入和修改数据集的命令存入缓冲区(非查询类)3):M
子非鱼 子非鱼
1年前
Redis高级
第一章Redis的持久化由于redis是一个内存数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式,分别为RDB以及AOF,且Redis默认开启的数据持久化方式为RDB方式。1、RDB持久化方案Redis会定期保存数据快照至一个rbd文件中,并在启动时自动