【11月10日】Redis 主从复制技术

(Remind) MySQL 主从复制的方式

MySQL 数据库支持的主从复制方式如下:

  • 异步复制(Asynchronous replication)

    MySQL 默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返回给客户端,并不关心从库是否已经接受并处理。这样就会有一个问题,主库如果宕机,会导致数据丢失。

  • 全同步复制(Fully synchronous replication)

    指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事物才能返回,所以全同步复制的性能必然会收到严重的影响。

  • 半同步复制(Semisynchronous replication)

    介于异步复制和全同步之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库收到并写到 relay log 中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性。



  • 主从复制的优势 - 读写分离

    通过读写分离操作,可以实现服务器负载均衡,提升数据库的并发访问能力

    • 读写分离在读数据时存在一定的延时问题
    • 读写分离非常适合查询数据库操作频繁地系统
  • 主从复制的优势 - 异地备份

  • 主从复制的优势 - 故障容灾

    当主数据库出现问题时,数据库管理员可以立即让从数据库代替主数据库,快速恢复系统服务



Redis 主从复制概念

  • Redis 支持主从复制,而且支持一主多从以及多级从结构(与 MySQL 一样)
  • Redis 主从复制一是为了纯粹的冗余备份,二是为了提升读性能(读写分离)
  • Redis 主从复制是异步进行的(主从同步不会影响主逻辑,也不会降低 Redis 的处理性能)
  • 生产一边关闭主服务器的持久化功能,只让从服务器持久化(提高主服务器的处理性能)
  • 生产一般从服务器被设置为只能模式(避免从服务器的数据被误

Redis 主从复制流程图


Redis 主从复制作用

  • 数据冗余

    主从复制实现了数据的热备份(一种数据的冗余方式)

  • 故障恢复

    当节点出现问题,可以由从节点提供服务,实现快速的故障恢复(一种服务的冗余方式)

  • 负载均衡

    在主从复制的基础上,配合读写分离,可以由主节点提供写功能,由从节点提供读功能,分担服务器负载,尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高 Redis 服务器的并发量和处理性能

  • 高可用基

    主从复制还是哨兵和集群能够实施的基础(因此说主从复制是 Redis 高可用的基石)


Redis 哨兵模式

主从架构的弊端


哨兵模式


哨兵模式工作原理

  • 哨兵模式通过间隔时间发送命令,让 Redis 服务器返回监控其运行状态,包括主服务器和从服务器(心跳检测)
  • 当哨兵模式监测到 Master 主服务器宕机,会自动将 Slave 从服务器切换成 Master 主服务器,然后通过发布/订阅模式通知其他的 Slave 从服务器修改配置文件,让它们切换配置的 Master 主服务器 IP 地址和端口号(投票机制)

Redis 哨兵模式配置


Redis 集群架构

Redis 集群架构图


Redis 集群投票机制

Redis 集群环境搭建


缓存服务器集群

路由算法

  • 余数 Hash 路由算法
  • 一致性 Hash 路由算法
posted @ 2020-11-12 14:40  tantanli  阅读(247)  评论(0编辑  收藏  举报