Redis学习:主从复制和哨兵模式

是什么

​ 主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,Slave以读为主

能干嘛

  • 读写分离
  • 容灾快速恢复
    在这里插入图片描述

实现主从复制

拷贝多个redis.conf文件

开启daemonize yes

Pid 文件名字 pidfile

指定端口 port

Log文件名字

dump.rdb名字dbfilename

Appendonly 关掉或者换名字

具体步骤:

  1. 创建操作主从复制配置文件目录myMaster

  2. 将基本配置文件复制到myMaster文件中,作为基本配置

  3. 配置一主两从,创建三个配置文件,如下

    1. 6379redis配置文件

      include /data/redis/myMaster/redis.conf
      pidfile /var/run/redis_6379.pid
      port 6379
      dbfilename dump6379.rdb
      
    2. 6380redis配置文件

      include /data/redis/myMaster/redis.conf
      pidfile /var/run/redis_6380.pid
      port 6380
      dbfilename dump6380.rdb
      
    3. 6381redis配置文件

      include /data/redis/myMaster/redis.conf
      pidfile /var/run/redis_6381.pid
      port 6381
      dbfilename dump6381.rdb
      
  4. 配从不配主

    slaveof <ip> <port>

    称为某个实例的从服务器

    在6380和6381上执行:slaveof 127.0.0.1 6379
    在这里插入图片描述

在主机上写数据,在从机上可以读取数据

注意:不可以在从机写数据

127.0.0.1:6380> set k1 v1
(error) READONLY You can't write against a read only replica.

主机挂掉,重启即可恢复

从机从其需重新设置:saveof 127.0.0.1 6379

可以将配置增加到文件中,永久生效

复制原理

  • Slave启动成功连接到master后会发送一个sync命令;
  • Master接到命令启动后台的存盘进程,同时收到所有收到的用于修改数据命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步;
  • 全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中;
  • 增量复制:Master继续将新的所有收集到的修改命令一次传给slave,完成同步;
  • 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行;
    在这里插入图片描述

薪火相传

​ 上一个Slave可以是下一个slave的Master,slave同样可以接收其他slave的链接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力,去中心化降低风险。

​ 用slaveof <ip> <port>;

​ 中途变更转向:会清除之前的数据,重新建立拷贝最新的;

​ 风险是一旦某个slave宕机,后面的slave都无法备份;

​ 主机挂了,从机还是从机,无法写数据
在这里插入图片描述

反客为主

​ 当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。

​ 用slaveof no one 将从机变为主机
在这里插入图片描述

哨兵模式(sentinel)

是什么

​ 反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
在这里插入图片描述

实现哨兵模式

  1. 配置哨兵(配置文件)

    在myMaster目录下创建sentinel.conf文件(文件名固定)

    添加配置:sentinel monitor myMaster 127.0.0.1 6379 1

    myMaster为监控对象起的服务器名称,1为至少有多少个哨兵同意迁移的数量

  2. 启动哨兵

    redis-sentinel /data/redis/myMaster/sentinel.conf

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ggs6uSRt-1675081540721)(C:\Users\JMB125\AppData\Roaming\Typora\typora-user-images\image-20230129161400677.png)]

  3. 当主机挂掉,从机选举中产生新的主机

    (大概10秒左右可以看到哨兵窗口日志,切换了新的主机)

    哪个从机会被选举为主机呢?根据优先级:slave-priority

    原主机重启后会变为从机
    在这里插入图片描述
    在这里插入图片描述

复制延时

​ 由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会是这个问题更加严重。

故障恢复

在这里插入图片描述

优先级在redis.conf中默认:replica-priority 100,值越小优先级越高

偏移量是指获得原主机数据最全的

每个redis实例启动后都会随机生成一个40位的runid

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值