06. Redis 主从复制

发布于:2024-05-23 ⋅ 阅读:(104) ⋅ 点赞:(0)

概念

主从复制

是指将一台 Redis 服务器的数据复制到其他的 Redis 服务器:

  • 前者称为主节点(master/leader),后者成为从节点(slave/follower);
  • 数据的复制是单向的,只能由主节点到从节点;
  • 主节点以写为主,从节点以读为主。

默认情况下,每台 Redis 服务器都是一个主节点,且一个主节点可以有多个从节点(或者没有),但一个从节点只能有一个主节点。

主从复制的作用

  • 数据冗余:主从复制实现了数据的热备份,是持久化以外的一种数据冗余方式;
  • 故障恢复:当主节点故障时,可以由从节点提供服务,实现故障的快速恢复;
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,从节点提供读服务,分担服务器负载。尤其在写少读多的情况下,通过多个节点分担读负载,可以大大提高 Redis 服务器的并发量。
  • 高可用的基石:主从复制是哨兵模式和集群的基础。

环境配置

只配置从库,不配置主库。

查看当前库的信息:

127.0.0.1:6379> info replication
# Replication
role:master # 角色 master
connected_slaves:0 # 从机,没有从机
master_failover_state:no-failover
master_replid:3433f937ad4fc91627d580ed159a712565a66327
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

总结

  • 主机只有写操作,从机只有读操作。在从机执行写操作会报错。
  • 主机断开连接,从机依旧是连接到主机的,但是没有写操作;如果主机重新连接成功,从机依旧可以获取到主机写的数据。

复制原理

slave 启动成功连接到 master 后会发送一个 sync 同步命令,master 接到命令后,启动后台的存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,master 将传送整个数据文件到 slave,完成一次完全同步。

  • 全量复制:slave 在接收到数据库文件数据后,将其存盘并加载到内存中;
  • 增量复制:master 将新的收集到的修改数据的命令依次传给 slave,完成同步。

slave 只要重新连接 master,就会自动执行一次完全同步(全量复制)。

宕机后手动配置主机

配置从机:

slaveof 127.0.0.1 6379

使自己变成主机:

slaveof no one

网站公告

今日签到

点亮在社区的每一天
去签到