尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Redis 主从模式

Redis 主从模式 主从模式单节点 Redis 的并发能力是有上限的为了进一步提高并发能力我们可以搭建主从架构实现读写分离主从集群的读写分离并非默认机制需要 Redis 客户端自行实现。① 集群搭建采用一主两从的主从集群架构保证高可用性IPPORT角色192.168.150.1017001master192.168.150.1017002slave192.168.150.1017003slave通过修改配置文件或执行命令开启主从关系修改配置文件永久生效在 slave 的配置文件中为其指定 master 的 IP 和端口号。slaveof masterip masterport执行命令临时生效连接 slave 并执行 replicaof5.0 版本及以后或 slaveof5.0 版本以前命令为其指定 master 的 IP 和端口号。通过 info replication 命令查看主从集群状态② 全量同步当主从节点首次建立连接时会进行全量同步将 master 的数据全部拷贝给 slave 基于 RDB 的全量同步原理master 节点通过 replid 和 offset 判断 salve 节点是否是首次建立连接replid数据集标识每一个 master 都有唯一的 replidslave 会继承 master 的 replid。offset偏移量随着记录在 repl_baklog 中的数据增多而递增。slave 数据同步时会记录当前同步的 offset若 slave 的 offset 小于 master 的 offset 说明 slave 的数据落后于 master需要进行同步。因为 slave 原本也是一个 master也有自己的 replid 和 offset当变成 slave 并与 master 首次建立连接时会发自己的 replid 和 offsetmaster 判断 slave 发送来的 replid 与自己的不一致则认为这是一个全新的 slave需要进行全量同步然后 master 会将自己的 replid 和 offset 发送给当前 slaveslave 保存这些信息后 replid 就与 master 保持一致了。待 master 和 slave 的 replid 保持一致后master 会执行一次 bgsave 操作并将 RDB 文件发送给 slaveslave 清空本地数据并加载该 RDB 文件随后即可根据 repl_backlog 进行增量同步可以将 master 的 repl-diskless-sync 设置为 yes 启用无磁盘复制避免全量同步时的磁盘 IO。③ 增量同步全量同步需要 master 先执行 RDB 持久化再将 RDB 文件通过网络传输给 slave时间成本较大。因此只有首次连接需要进行全量同步其它多数时候 slave 与 master 都是基于 repl_backlog 进行增量同步基于 repl_backlog 的增量同步原理repl_baklog 是一个固定大小的环形数组用于记录 Redis 处理过的命令日志及 offset包括当前时刻下 master 和 slave 的 offset若 slave 的 offset 落后于 master 则进行增量同步由于 repl_baklog 的大小有上限写满后会从头开始覆盖先前的数据如果 slave 断开时间过久导致尚未同步的数据被覆盖则无法完成增量同步只能再次全量同步建议适当提高 repl_baklog 的大小当发现 slave 宕机时要尽快恢复尽可能避免全量同步。④ 链式结构由于所有的写操作都是先在 master 上执行然后同步到 slave所以主从同步的过程一定会存在延迟。当一个 master 的 slave 数量过多时延迟问题会大大加重因此当我们需要大量 slave 分担查询压力时可以采用链式结构来减少 master 主从同步的压力
返回列表