企业级Redis开发运维从入门到实践 (20)— Redis复制的原理与优化
什么是主从复制
单机有什么问题?
单机存在机器故障、容量瓶颈、QPS(每秒查询率)瓶颈的问题。
主从复制的作用
- 数据副本
- 扩展读性能;
一对一的主从结构
一对多的主从结构(主从备份、读写分离)
简单示例
主节点 set 数据后,从节点可以 get 到主节点中写入的数据。
总结
- 一个 master 可以有多个 salve。
- 一个 salve 只能有一个 master。
- 数据流向是单向的,master 到 slave。
主从复制的配置
两种实现方式
- slaveof命令
- 配置
命令实现
实现复制
- client客户端执行 slaveof 命令;
- 从节点向客户端返回消息(异步过程);
- 从节点从主节点复制数据。
从节点通过slave of切换新的主节点
通过slaveof命令还可以实现切主操作,所谓切主是指把当前从节点对主节点的复制切换到另一个主节点。
执行slaveof{newMasterIp} {newMasterPort}命令即可,
例如把6380节点从原来的复制6379节点变为复 制6381节点,如图6-3所示
- 断开与旧主节点复制关系;
- 与新主节点建立复制关系;
- 删除从节点当前所有数据;
- 对新主节点进行复制操作。
取消复制
- client客户端执行 slaveof no one 命令;
- 从节点与主节点断开连接(之前从主节点复制的数据不会被清除,之后主节点新写入的数据不会同步到从节点);
- 从节点向客户端返回消息(同步过程);
- 从节点晋升为主节点。
修改配置
# 当前节点称为某一个主节点的从节点
slaveof ip port
# 设置该从节点只读
slave-read-only yes
比较
方式 | 命令 | 配置 |
---|---|---|
优点 | 无需重启 | 统一配置 |
缺点 | 不便于管理 | 需要重启 |