主机数据更新后根据主机以及策略,自动同步到备机的master/slave机制,master以写为主,slave以读为主。那么我们首先了解一下这两个角色 master(主)和slave(从),但是我们要注意的是在redis中只允许有一个主,从可以有很多很多个。
redis的主从复制功能是支持多个数据库之间的主从复制的,主类数据库主要是读写操作,当主数据库的数据发生了改变的情况下,主数据库的数据可以自动同步到从数据库中去,从数据库一般都是从主数据库中同步过来的信息,一般情况下只会进行读操作,一个主数据库可以有多个从数据库,但是从数据库只能有一个主数据库。通过这种主从复制的关系,可以更好的让我们实现数据备份以及数据库的读写分离,能够提高数据库的负载能力。
全量复制的流程图
Redis主从复制 主要是分为全量同步和部分同步 全量同步一般发生在slave初始化阶段,这个时候slave需要将master上的数据都复制一遍,后边部分同步都是在master发生变化后,slave进行的部分同步
数据同步的过程
当一个从数据库启动的时候,会向主数据库发送sync命令当主数据库收到sync命令后会在后台保存快照(执行rdb操作),并在缓存区记录后面所有的写操作当主数据库快照保存完整后,redis会将主数据库快照文件发送给从数据库从数据库收到快照后,会丢弃原有的数据库,载入收到的快照主数据库发送完快照后,会开始向从数据库中发送从数据库的写命令从数据库完成对快照的载入,会接受请求,开始执行向从数据库中执行相对应的写操作正式商用的环境肯定是配置不同的redis机器,但是目前是没有这样的应用场景,所以我决定使用的是同一台机器配置不同的redis.conf进行相关的环境的模拟中,一样能够达到目的
1.配置三个不同的redis.conf文件
redisconf6379.conf ,redisconf6380.conf和redisconf6379.conf 2.修改每个配置文件,此时是设置一个集群,在集群里中对这些信息进行相关的修改 3.我们对我们的三台redis服务器进行相关功能的启动,并判断其相关的特点
4.执行slaveof命令,显然是对应的机器可以实现主从复制,真正的实现了主从复制
Redis的哨兵模式需要主从复制的支持. Redis的哨兵(Sentinel)系统用于管理多个Redis服务器,管理着以下的功能:
监控(Monitor):哨兵(sentinel)会不断地检查系统的master和slave是否运行正常 提醒(Notification):当监控某个哨兵出现了问题的时候,哨兵可以通过api向程序和管理员发送请求 自动故障迁移(automatic failover):当系统中的一个master不能工作时候,这个时候哨兵(sentinel)会自动进行故障转移操作,它会将master系统中的一个slave自动生成master,当客户端对已经失效的master时候,这个时候我们的新的master会自动替换到原来失效的master。
每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机” Subjective Down,简称sdown). 若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down机,Objective Down,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置. 虽然哨兵(sentinel) 释出为一个单独的可执行文件 redis-sentinel ,但实际上它只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动哨兵(sentinel). 单个哨兵(sentinel)
1.修改sentinel.conf配置文件(该文件存在于redis安装包根目录下) 注意:初次配置,不需要打开#sentinel monitor mymaster注释,因为后几行有默认当台服务器为主服务器 原配置:sentinel monitor mymaster 127.0.0.1 6379 2 通过这句来修改为: sentinel monitor mymaster 10.211.55.3 6379 1 #主服务器名称 IP 端口号 选举次数(redis集群服务器不多时可以配置成1) 2.修改下一行:sentinel auth-pass mymaster 123456 # 第一个参数mymaster为主节点名称,123456为主服务器密码。 3. 修改心跳检测 5000毫秒【默认为30秒】 sentinel down-after-milliseconds mymaster 5000 4. 启动哨兵模式【cd到redis安装根目录下启动,因为需要运行redis-server ./redis-sentinel /opt/soft/redis-3.0.4/sentinel.conf
