网站首页 > 精选文章 正文
Redis 主从复制
将一台Redis(master)服务的数据,复制到其他Redis(slave)服务器上,分担读压力,类似于Mysql的主从复制,分为全量同步和增量同步。
redis 策略是,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。
主要作用
- 数据备份(故障恢复):当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复。
- 读写分离(负载均衡):提高服务器的负载能力,由主节点提供写服务,由从节点提供读服务,可随时改变从库的数量,和 myql 基本保持一样。
- 高可用:主从复制是Redis高可用的基础,哨兵和集群都是基于此模式进行。
全量同步
一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。
全量同步基本流程:
- slave 通过 psync命令同步数据,与master建立socket长连接
- master 收到psync命令,执行bgsave语句,生成rdb快照;开始做rdb之后新数据的缓存,其实就是一些写数据
- master 发送rdb数据
- slave 清空数据,并加载master发来的rdb数据
- master 把生成rdb文件过程中的修改数据从repl buffer发送到slave
- slave 执行接收到的修改命令
- master通过socket长连接持续把写命令发送给从节点,保证主从一致性
增量同步
指Slave初始化后,Master发生的写操作同步到从服务器的过程。
如果出现网络闪断或者命令丢失等异常情况时,当主从连接恢复后,由于从节点之前保存了自身已复制的偏移量和主节点的运行ID。因此会把它们当作psync参数发送给主节点,要求进行部分复制操作,格式为psync {runId} {offset}。
增量同步基本流程:
- slave 连接断开
- master最近数据的修改命令的缓存
- slave 重新建立Socket长连接到master
- slave psync命令同步数据(offset偏移量控制)
- master 判断 salve的offset如果在repl backlog buffer中,则master会将缓存中从salve的offset之后,数据一次性同步给salve节点,否则会全量同步
- master通过socket长连接持续把写命令发送给从节点,保证主从一致性
如何配置
redis.conf
# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize yes
# slave 服务器 新版本为 replicaof
slaveof 192.168.1.100 6379
# slave 只读,master 写,实现读写分离
slave-read-only yes
# slave 复制超时时间
repl-timeout 60
# slave 离线之后,master 会把离线之后的写入命令存储在一个特定大小的队列中,避免短时间断开服务却进行全量同步的问题
repl-backlog-size 1M
# 无盘复制,主从全量同步时,主库并不会在本地创建RDB 文件,而是创建一个子进程通过Socket将RDB文件写入到从服务器,节约IO资源
repl-diskless-sync yes
# 客户端输出缓冲区配置。每个客户端连接(包括从库)后都会申请一个buffer空间,通过该选项限制可以避免buffer持续增长消耗内存。如果超过限制主库会强制断开连接,也就是说从库处理慢导致主库buffer积压达到限制后主库会强制断开从库的连接,此时主从复制会中断,中断后如果从库再次发起复制请求还会继续被断开导致恶性循环,引发复制风暴。调为0则不限制
client-output-buffer-limit slave 256mb 64mb 60
# 当master服务设置了密码保护时,slav服务连接master的密码
masterauth <master-password>
# Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
requirepass 123456
- 上一篇: 什么是redis,怎么启动及如何压测
- 下一篇: Redis系列专题4--Redis配置参数详解
猜你喜欢
- 2025-02-04 Redis系列之(二):Redis主从同步,读写分离
- 2025-02-04 redis主从搭建、发现阻塞、内存管理优化(四)
- 2025-02-04 redis配置密码【永久及临时配置】
- 2025-02-04 Redis集群配置(redis集群配置文件详解)
- 2025-02-04 Redis 为什么要引入 Pipeline机制?十分钟带你掌握!
- 2025-02-04 Spring Security结合Redis实现缓存功能
- 2025-02-04 Redis 7.x哨兵模式如何实现?基于Spring Boot 3.x版
- 2025-02-04 redis在linux上的部署(linux redis部署)
- 2025-02-04 我们一起进大厂——Redis实战之哨兵模式
- 2025-02-04 面试官:介绍一下 Redis 三种集群模式
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)