Redis主从复制和哨兵模式


一、🌴Redis主从复制

1. 🌿为什么要搭建主从模式:

  • 持久化保证了即使redis服务重启也不会丢失数据,但是当redis服务器的硬盘损坏了可能会导致数据丢失,通 过redis的主从复制机制就可以避免这种单点故障(单台服务器的故障)。

  • 主redis中的数据和从上的数据保持实时同步,当主redis写入数据时通过主从复制机制复制到两个从服务上。

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

  • 主机master配置:无需配置

推荐主从模式同步数据:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ul6AOXyf-1649171065948)(redis笔记.assets/image-20220403201623876.png)]

工作中一般选用:一主两从或一主一从

数据会同步到从服务器。在这个集群中的几台服务器上都有同样的数据。

2. 🌿 主从搭建步骤:

主机:不用配置。仅仅只需要配置从机,从机slave配置:(这里是伪集群)

🍃第一步:

命令cp redis/ redis1 -r复制出一个从机,注意使用root用户。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-362M9XKY-1649171065950)(redis笔记.assets/image-20220403202056593.png)]

🍃第二步:

修改从机的redis.conf中的replicaof 。

语法: replicaof 主机ip 主机端口号 

vi redis.conf进去。

提示:检索文件: 输入:/replicaof 当前页没有时,输入n,查找下一页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gxgwpZo8-1649171065950)(redis笔记.assets/image-20220403202825051.png)]

🍃第三步:

修改从机的port地址为6380 。

若文件处于编辑状态,按Esc退出编辑状态。

提示:检索文件: 输入:/port 当前页没有时,输入n,查找下一页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VDTZlnbS-1649171065951)(redis笔记.assets/image-20220403203154857.png)]

退出保存。

🍃第四步:

清除从机中的持久化文件 。

rm -rf appendonly.aof dump.rdb

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s3UW6Ggh-1649171065952)(redis笔记.assets/image-20220403203613098.png)]

🍃第五步:启动从机

[root@centos7 redis1]#./bin/redis-server  ./redis.conf 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JjuFDfBc-1649171065954)(redis笔记.assets/image-20220403204730294.png)]

🍃第六步:启动6380的客户端

[root@centos7 redis1]# ./bin/redis-cli -h 192.168.249.166 -p 6380

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AonDaEaB-1649171065954)(redis笔记.assets/image-20220403204906584.png)]

停止客户端: ./bin/redis-cli -p 6380 shutdown

注意:

  • 主机一旦发生增删改操作,那么从机会自动将数据同步到从机中

  • 从机不能执行写操作,只能读

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmdb7JRP-1649171065955)(redis笔记.assets/image-20220403205102855.png)]

You can't write against a read only slave

复制的过程原理

  • 当从库和主库建立MS(master slaver)关系后,会向主数据库发送SYNC命令;

  • 主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来;

  • 快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis;

  • 从Redis接收到后,会载入快照文件并且执行收到的缓存命令;

  • 主Redis每当接收到写命令时就会将命令发送从Redis,保证数据的一致;【内部完成,所以不支持客户端在从 机人为写数据。】

复制架构中出现宕机情况?

从Redis宕机:重启就好

宕机[dàng],是台湾计算机术语,在大陆就叫当机,就是通常说的死机,之所以叫宕机,应该是>从英文音译过来的,即英文:down,就直接叫宕机了。

主Redis宕机:
      从数据库(从机)中执行SLAVEOF NO ONE命令,断开主从关系并且提升为主库继续服务[把一个从机做为主机,这个时候新主机(之前的从机)就具备写入的能力;主服务器修好后,重新启动后,执行SLAVEOF命令,将其设置为从机(老主机设置为从机)。手动执行,过程复杂,容易出错。是否有更好的方案?这时候哨兵模式便发挥作用了。

二、🌴 Redis哨兵模式

1. 🌿 哨兵模式是什么:

      给集群分配一个站岗的哨兵,站岗监督集群情况。

2. 🌿 哨兵的作用:

就是对Redis系统的运行情况监控,它是一个独立进程。它的功能:

  1. 监控主数据库和从数据库是否运行正常;

  2. 主数据出现故障后自动将从数据库转化为主数据库;

如果主机宕机,开启选举工作,选择一个从机做主机。

      虽然哨兵(sentinel) 释出为一个单独的可执行文件 redis-sentinel ,但实际上它只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动哨兵(sentinel)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7xIs0rpb-1649171693247)(redis笔记.assets/image-20220403213248111.png)]

3. 🌿 环境准备:

一主两从,启动任一从机时,启动哨兵模式 。

①从主机复制两个从机redis1和redis2

[root@centos7 local]# cp redis/ redis1 -r
[root@centos7 local]# cp redis/ redis2 -r
[root@centos7 local]# ll

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jITjFCW3-1649171693248)(redis笔记.assets/image-20220403211058660.png)]

②修改redis.conf文件下的replicaofport端口号。

replicaof用于追随某个节点的redis,被追随的节点为主节点,追随的为从节点。

port定义该主机或从机的端口号

redis1和redis2的replicaof一样,port分别在主机的port递增一个即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDK7Eyav-1649171693249)(redis笔记.assets/image-20220403212502942.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cMsvO58R-1649171693249)(redis笔记.assets/image-20220403212651960.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l7ChpoEG-1649171693250)(redis笔记.assets/image-20220403213029794.png)]

🍃第一步:配置哨兵:

哨兵主要是用来监听主服务器的,所以一般把哨兵部署在从服务器上监听。

①首先创建哨兵配置文件vi sentinel.conf

可从源码配置redis-5.0.5/sentinel.conf中复制内容,也可以直接自定义该文件到bin目录下 。

[root@centos7 redis1]# vi sentinel.conf

在配置中输入:

#sentinel monitor mastername 内网IP(127.0.0.1) 6379 1
sentinel monitor mastername 192.168.249.166 6379 1

说明:

mastername 监控主数据的名称,自定义

127.0.0.1:监控主数据库的IP,上面需要监控的是主机ip。

6379:端口

1:最低通过票数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VuXjJIfl-1649171693251)(redis笔记.assets/image-20220403214826571.png)]

保存退出。

🍃第二步:启动哨兵:

哨兵是一个单独的进程,启动之前确保主从服务是正常的。先启动主服务,后启动从服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WEMShbwt-1649171693253)(redis笔记.assets/image-20220403215523791.png)]

把日志写入指定的文件

[root@centos7 redis1]# ./bin/redis-sentinel ./sentinel.conf >sent.log &
[1] 24386

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FXdJjbGW-1649171693254)(redis笔记.assets/image-20220403215821710.png)]

      启动redis服务后,程序会自动配置文件sentinel.conf,并生成内容,注意:若再起启动需要删除下生成的内容。

哨兵启动方式:

[root@centos7 redis1]# ./bin/redis-server sentinel.conf --sentinel
#查看进程
[root@centos7 redis1]# ps aux |grep redis

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I6qNh5Y2-1649171693255)(redis笔记.assets/image-20220403220303289.png)]

🍃第三步:主机宕机

目的:体验哨兵模式的作用过程。

模拟场景:机房意外断电了。硬件故障:硬盘坏了。

哨兵工作,链接之前的从机确认:

info replication命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0zpXCK4A-1649171693257)(redis笔记.assets/image-20220404192503558.png)]

新建连接或者先quit再使用ps aux|grep redis查看pid

模拟主机宕机,杀死主机服务进程:kill -9 pid

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s1asE8ee-1649171693258)(redis笔记.assets/image-20220404194047941.png)]

再次info replication命令查看。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XbBqElvh-1649171693259)(redis笔记.assets/image-20220404194636616.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPjpiNiP-1649171693260)(redis笔记.assets/image-20220404195438810.png)]

      这也就是哨兵模式的作用,当主机宕机时,在从机中重新选举一个从机当主机,让整个集群正常运行,那又为什么要重新选举,因为在redis集群中只有主机能读和写操作,而从机只能读不能写操作

总结:

主从集群:

主机有写入权限。从机没有,只有可读。

意外宕机方案:

①手动恢复:

人为重启服务器,主机宕,把从机设置为主机。也就是无哨兵模式。

②自动恢复:

使用哨兵监控。自动切换主从。


  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小满@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值