来源:Node.js

主从复制

主从复制是一种数据复制和同步机制,其中一个Redis服务器(主服务器)将其数据复制到一个或多个其他Redis服务器(从服务器)

主从复制提供了数据冗余备份、读写分离和故障恢复等功能

主从复制的工作机制:

  1. 配置主服务器:
    • 在主服务器的Redis配置文件中启用主从复制并指定从服务器的IP地址和端口号
    • 可以使用replicaof配置选项或slaveof配置选项指定从服务器
  2. 连接从服务器
    • 从服务器连接到主服务器并发送复制请求
      • 发送SYNC命令请求进行全量复制
      • 发送PSYNC命令请求进行部分复制(增量复制)
  3. 全量复制(SYNC)
    • 如果从服务器是第一次连接或无法执行部分复制,主服务器将执行全量复制
    • 在全量复制期间,主服务器将快照文件(RDB文件)发送给从服务器,从服务器将接收并加载该文件以完全复制主服务器的数据
  4. 部分复制(PSYNC)
    • 如果从服务器已经执行过全量复制并建立了复制断点,主服务器将执行部分复制
    • 在部分复制期间,主服务器将发送增量复制流(replication stream)给从服务器,从服务器将接收并应用该流以保持与主服务器的同步
  5. 复制持久化
    • 从服务器接收到数据后,会将其保存在本地磁盘上,以便在重启后仍然保持数据的一致性
  6. 同步延迟
    • 从服务器的复制是异步的,因此存在复制延迟
    • 延迟取决于网络延迟、主服务器的负载和从服务器的性能等因素。
  7. 读写分离
    • 一旦建立了主从复制关系,从服务器可以接收读操作(不可以写入)
    • 可以将读流量从主服务器分散到从服务器上,从而减轻主服务器的负载
  8. 故障恢复
    • 如果主服务器发生故障,可以将一个从服务器提升为新的主服务器,以继续提供服务
    • 当主服务器恢复时,它可以作为从服务器连接到新的主服务器,继续进行数据复制

配置

需要在redis文件夹下新建一个配置文件,例如redis-11451.conf作为从服务器配置:

1
2
3
4
bind 127.0.0.1  #ip地址
port 11451 #端口号
daemonize yes #守护线程静默运行
replicaof 127.0.0.1 6379 #指定主服务器
1
2
3
4
5
redis-server ./redis-11451.conf  # 启动从服务器,指定配置文件
redis-cli -p 11451 # 打开从服务器的cli
redis-cli # 启动主服务器,默认就是打开主服务器的配置文件
set master 2 # 主服务器写入值
# 之后就会被从服务器同步来啦