企业级Redis开发运维从入门到实践 (20)— Redis复制的原理与优化

什么是主从复制

单机有什么问题?

单机存在机器故障、容量瓶颈、QPS(每秒查询率)瓶颈的问题。

主从复制的作用
  • 数据副本
  • 扩展读性能;

一对一的主从结构
企业级Redis开发运维从入门到实践 (20)— Redis复制的原理与优化

一对多的主从结构(主从备份、读写分离)
企业级Redis开发运维从入门到实践 (20)— Redis复制的原理与优化

简单示例
主节点 set 数据后,从节点可以 get 到主节点中写入的数据。
企业级Redis开发运维从入门到实践 (20)— Redis复制的原理与优化

总结
  • 一个 master 可以有多个 salve。
  • 一个 salve 只能有一个 master。
  • 数据流向是单向的,master 到 slave。

主从复制的配置

两种实现方式
  • slaveof命令
  • 配置
命令实现

实现复制

  1. client客户端执行 slaveof 命令;
  2. 从节点向客户端返回消息(异步过程);
  3. 从节点从主节点复制数据。

企业级Redis开发运维从入门到实践 (20)— Redis复制的原理与优化

从节点通过slave of切换新的主节点

通过slaveof命令还可以实现切主操作,所谓切主是指把当前从节点对主节点的复制切换到另一个主节点。
执行slaveof{newMasterIp} {newMasterPort}命令即可,
例如把6380节点从原来的复制6379节点变为复 制6381节点,如图6-3所示

  1. 断开与旧主节点复制关系;
  2. 与新主节点建立复制关系;
  3. 删除从节点当前所有数据;
  4. 对新主节点进行复制操作。
    企业级Redis开发运维从入门到实践 (20)— Redis复制的原理与优化

取消复制

  1. client客户端执行 slaveof no one 命令;
  2. 从节点与主节点断开连接(之前从主节点复制的数据不会被清除,之后主节点新写入的数据不会同步到从节点);
  3. 从节点向客户端返回消息(同步过程);
  4. 从节点晋升为主节点。

企业级Redis开发运维从入门到实践 (20)— Redis复制的原理与优化

修改配置
# 当前节点称为某一个主节点的从节点
slaveof  ip  port

# 设置该从节点只读
slave-read-only  yes
比较
方式 命令 配置
优点 无需重启 统一配置
缺点 不便于管理 需要重启