Redis 数据库的主从复制

发布时间 2023-04-05 13:51:37作者: Linqylin
1. 主从复制
1.1 什么是主从复制
  主从复制,是将多台数据库服务器分为主节点(master)和从节点(slaver),主节点数据更新后会根据配置和策略,自动同步到从节点上,从而保证主从节点中存有相同的数据。
 
1.2 主从复制的作用
有了主从复制,数据可以有多份副本,这就带来了很多好处:
(1)提升数据库系统的请求处理能力。
单个节点能够支撑的读流量有限。部署多个节点,并构成主从关系,主从节点一起提供服务。
(2)默认实现读写分离机制,Master 以写为主,Slave 以读为主,提升系统的缓存读写性能。
(3)容灾快速恢复,提升整个系统的可用性。
因为从节点中有主节点数据的副本,当主节点宕机后,可以立刻提升其中一个从节点为主节点,继续提供服务。
 
1.3 Redis 的主从复制原理
  主从复制,直观的做法是主节点产生一份数据的快照发送给从节点,以快照数据为基准,将之后增量的数据变更同步给从节点,保证主从数据的一致。总体来看,主从复制一般包含全量数据同步、增量同步两个阶段。
(1)全量数据同步
  主节点产生一份全量数据的快照,即 RDB 文件,并将此快照发送给从节点。且从产生快照时刻起,记录新接收到的写命令。当快照发送完成后,将累积的写命令发送绐从节点,从节点执行这些写命令。一般用于主从节点首次数据同步,完成基准数据。
(2)增量同步(命令传播)
  全量数据同步完成后,主节点将执行过的写命令源源不断地发送给从节点,从节点执行这些命令,保证主从节点中数据有相同的变更,保证主从节点数据的一致。
 
2、Redis 主从复制机制总结
(1)一个 master 节点 可以有多个 slave 节点;
(2)slave 节点故障,读请求的处理性能下降;
(3)master 节点故障,写请求无法执行;
(4)当 master 发生故障,可手动将其中一台 slave 使用 slaveof no one 命令提升为 master,其它 slave 执行 slaveof 命令指向这个新的 master;
(5)主从复制模式的故障转移需要手动操作,要实现自动化处理,这就需要Sentinel 哨兵,实现故障自动转移。