6.1.1 建立复制

  • 主节点 master
  • 从节点 slave
  • 默认情况下都是主节点
  • 每个从节点只能有一个主节点
  • 每个主节点可以拥有多个从节点
  • 复制的数据流是单向的: 主 -> 从

配置复制的方式有三种:

  • 在配置文件中加入 slaveof {masterHost} {masterPort}, 随 Redis 启动生效
  • 在 redis-server 启动命令后加入 —slaveof {masterHost} {masterPort} 生效
  • 直接使用命令 slaveof {masterHost} {masterPort} 生效

slaveof 配置都是在从节点发起.

如果在 master 中设置数据, 那么可以在 slave 中看到数据已同步了.

image.png

查看复制相关状态:

  1. info replication

6.1.2 断开复制

在从节点上执行: slaveof no noe

image.png

从节点不会删除已有数据.

切换主节点:

  • slaveof {newMasterIP} {newMasterPort}

image.png

  • 从节点会删除已有数据

6.1.3 安全性

  • requirepass 配置
  • auth 命令进行验证
  • 如果主节点配置了 requirepass, 那么从节点要连接主节点时, 需要配置 masterauth

6.1.4 只读

  • 默认情况下, 从节点使用 slave-read-only=yes 配置为只读模式

6.1.5 传输延迟

Redis 为我们提供了 repl-disable-tcp-nodelay 参数用于控制是否关闭 TCP_NODELAY, 默认关闭:

  • 当关闭时, 主节点产生的命令数据无论大小都会及时地发送给从节点, 这样主从之间延迟会变小, 但增加了网络带宽的消耗。适用于主从之间的网络环境良好的场景, 如同机架或同机房部署
  • 当开启时, 主节点会合并较小的 TCP 数据包从而节省带宽。默认发送时间间隔取决于 Linux 的内核, 一般默认为40毫秒。这种配置节省了带宽但增大主从之间的延迟。适用于主从网络环境复杂或带宽紧张的场景, 如跨机房部署

部署主从节点时需要考虑网络延迟、带宽使用率、防灾级别等因素, 如要求低延迟时, 建议同机架或同机房部署并关闭 repl-disable-tcp-nodelay; 如果考虑高容灾性, 可以同城跨机房部署并开启 repl-disable-tcp-nodelay。