redis的使用(三)主从复制、哨兵模式和持久化

一、主从复制

1.什么是主从复制

主节点中的数据和从节点上的数据保持实时同步,当主节点写入数据时通过主从复制机制会复制到从节点服务器上;

主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求;

一个redis可以即是主节点又是从节点,只有一个主节点,可以有多个从节点。

2.主从复制的作用:

提高redis的可用性(容灾),当主节点出现故障时,从节点开始提供服务;

读写分离,从而提高负载能力。

3.开启主从复制的方式:

方式一:主节点无需配置,从节点的redis.conf配置文件中增加slaveof  主节点ip 主节点端口

slaveof 192.168.91.128 6379 

启动主节点再启动从节点完成配置

方式二:从节点启动时通过命令启动redis-server --slaveof 192.168.91.128 6379

通过info命令验证是否开启成功

主节点信息:
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.91.128,port=6380,state=online,offset=369,lag=1

从节点信息
# Replication
role:slave
master_host:192.168.91.128
master_port:6379

当开启主从复制后,从节点一般是只读的,保证主服务器和从服务器的数据一致性

192.168.91.128:6380:0>set name zs
READONLY You can't write against a read only slave.

 操作命令

查看状态:info
断开主从复制:在从节点执行slaveof no one
断开后再变成主从复制slaveof 192.168.91.128 6379

4.主从复制的过程

从节点与主节点建立连接,发送sync同步命令;

主节点会开启一个后台进程,将数据库快照保存到文件中,保存完成后就将文件发送给从节点,同时主节点的主进程还在继续工作,收集新的写入并缓存;

从节点收到文件后将文件保存到本地。

二、哨兵模式

进一步实现高可用

1. 什么是哨兵

对主从服务器进行监控,监控redis的运行情况;

监控主从服务器是否正常运行,若主节点出现故障,根据票数自动将从节点转为主节点,实现自动切换。

2.心跳检测(监控主从服务器是否正常运行)

每个哨兵(sentinel) 会向其它哨兵(sentinel)、master(主节点)、slave(从节点)定时发送消息,以确认对方是否正常运行,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方宕机
若“哨兵群”中的多数sentinel都报告某一master没响应(>50%,所以至少要有3个节点),系统才认为该master已宕机,通过选举算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置。

来源:百度百科
Sentinel工作方式:
  1):每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令
  2):如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。
  3):如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。
  4):当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线
  5):在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令。
6):当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次
  7):若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。
  若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。

3.选举算法

每个在线的哨兵节点都可以成为领导者,当它确认主节点下线时,会向其它哨兵发is-master-down-by-addr命令,征求判断并要求将自己设置为领导者,由领导者处理故障转移;
当其它哨兵收到此命令时,可以同意或者拒绝它成为领导者;
如果哨兵发现自己在选举的票数大于等于num(sentinels)/2+1时,将成为领导者,如果没有超过,继续选举…………

4.配置

修改sentinel.conf配置文件配置哨兵
sentinel monitor mymaster  192.168.91.128 6379 2  #主节点 名称 IP 端口号 选举次数
#哨兵监听192.168.91.128 6379端口的主节点,名字叫做mymaster,当master不能用,此哨兵的权值为2
#配置主服务器的密码(如没设置密码,可以省略)  
sentinel auth-pass mymaster 123456  
修改心跳检测 5000毫秒
sentinel down-after-milliseconds mymaster 5000
启动redis服务
redis-server
启动哨兵模式
redis-sentinel   ./sentinel.conf

三、redis持久化方案:
    rdb:可以设置间隔多长时间保存一次(Redis不用任何配置默认的持久化方案)
        有点:让redis的数据存取速度变快
        缺点:服务器断电时会丢失部分数据(数据的完整性得不到保证)
    aof:可以设置实时保存
        优点:持久化良好,能包装数据的完整性
        缺点:大大降低了redis系统的存取速度

发布了73 篇原创文章 · 获赞 44 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_34928194/article/details/90263223
今日推荐