首页 Redis教程Redis高可用与集群

Redis常用命令详解

Redis哨兵(Sentinel)

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

redis 高可用与集群

虽然Redis可以实现单机的数据持久化,但无论是RDB也好或者AOF也好,都解决不了单点宕机问题,即一旦单台
redis服务器本身出现系统故障、硬件故障等问题后,就会直接造成数据的丢失,因此需要使用另外的技术来解决
单点问题。

配置 reids 主从复制

主备模式(master/slave),可以实现Redis数据的跨主机备份。
程序端连接到高可用负载的VIP,然后连接到负载服务器设置的Redis后端real server,此模式不需要在程序里面配 置Redis服务器的真实IP地址,当后期Redis服务器IP地址发生变更只需要更改redis 相应的后端real server即可, 可避免更改程序中的IP地址设置。

Redis高可用与集群插图

Slave主要配置

Redis Slave 也要开启持久化并设置和master同样的连接密码,因为后期slave会有提升为master的可能,Slave
端切换master同步后会丢失之前的所有数据。
一旦某个Slave成为一个master的slave,Redis Slave服务会清空当前redis服务器上的所有数据并将master的数据导入到自己的内存,但是断开同步关系后不会删除当前已经同步过的数据。

命令行配置

当前状态为master,需要转换为slave角色并指向master服务器的IP+PORT+Password

同步日志

在master 上观察日志

在slave节点观察日志

Redis高可用与集群插图(1)

保存配置到redis.conf

master和slave查看状态

slave观察日志

slave 状态只读无法写入数据

Master日志

主从复制过程

Redis支持主从复制分为全量同步和增量同步,首次同步是全量同步,主从同步可以让从服务器从主服务器备份数
据,而且从服务器还可与有从服务器,即另外一台redis服务器可以从一台从服务器进行数据同步,redis 的主从同 步是非阻塞的,master收到从服务器的sync(2.8版本之前是PSYNC)命令会fork一个子进程在后台执行bgsave命
令,并将新写入的数据写入到一个缓冲区里面,bgsave执行完成之后并生成的将RDB文件发送给客户端,客户端将 收到后的RDB文件载入自己的内存,然后redis master再将缓冲区的内容在全部发送给redis slave,之后的同步
slave服务器会发送一个offset的位置(等同于MySQL的binlog的位置)给主服务器,主服务器检查后位置没有错误将 此位置之后的数据包括写在缓冲区的积压数据发送给redis从服务器,从服务器将主服务器发送的积压数据写入内存,这样一次完整的数据同步,再之后同步的时候从服务器只要发送当前的offset位置给主服务器,然后主服务 器根据相应的位置将之后的数据发送给从服务器保存到其内存即可。 Redis全量复制一般发生在Slave首次初始化阶段,这时Slave需要将Master上的所有数据都复制一份。

具体主从同 步骤如下:

Redis高可用与集群插图(2)

主从同步优化配置

Redis在2.8版本之前没有提供增量部分复制的功能,当网络闪断或者slave Redis重启之后会导致主从之间的全量同 步,即从2.8版本开始增加了部分复制的功能。

性能相关配置

Slave同步过程日志

Redis高可用与集群插图(3)

master同步日志

Redis高可用与集群插图(4)

当master故障后,可以手动将slave 提升为master

master故障后,只能手动提升一个slave为新master,不支持自动切换。Master的切换会导致master_replid发生变化,slave之前的master_replid就和当前master不一致从而会引发所有 slave的全量同步。

停止slave同步并查看当前状态:

测试能否写入数据:

修改指向新的master

在master可看到有两个slave

Slave节点再有Slave

Redis高可用与集群插图(5)

在有slave的”master”查看状态,也就是中间那个slave:

常见主从复制故障汇总
master密码不对

即配置的master密码不对,导致验证不通过而无法建立主从同步关系。

Redis版本不一致

不同的redis 大版本之间存在兼容性问题,比如:3和4,4和5之间,因此各master和slave之间必须保持版本一致

Redis高可用与集群插图(6)

无法远程连接

在开启了安全模式情况下,没有设置bind地址或者密码。

本文链接:http://www.yunweipai.com/35517.html

Redis常用命令详解

Redis哨兵(Sentinel)

网友评论comments

发表评论

电子邮件地址不会被公开。

暂无评论

Copyright © 2012-2020 YUNWEIPAI.COM - 运维派
扫二维码
扫二维码
返回顶部