redis学习主从复制Master/slave

redis学习主从复制Master/slave
最新回答
当恨能成忧

2021-02-03 00:40:22

Redis主从复制(Master/Slave)的核心机制与操作要点如下

1. 主从复制的核心功能
主从复制通过异步同步实现数据冗余,Master负责写操作,Slave负责读操作,支持读写分离容灾恢复。数据同步分为全量复制(首次连接或重新连接时)和增量复制(后续同步修改命令)。全量复制时,Master启动后台存盘进程,将完整数据文件发送给Slave;增量复制时,Master仅传输新增的修改命令。

2. 配置与操作细节

  • 从库配置:通过命令slaveof <主库IP> <主库端口>动态绑定主库,或修改redis.conf文件中的REPLICATION部分实现永久配置。
  • 多实例管理:拷贝多个redis.conf文件(如redis6380.conf),修改daemonize yes、pidfile、port、logfile、dbfilename等参数以区分实例。
  • 状态监控:使用info replication命令查看主从状态,确认角色(Master/Slave)、连接状态及同步进度。

3. 主从数据一致性场景

  • 从库初始数据:若从库在绑定主库前已存在数据,绑定后会被全量覆盖,仅保留主库数据。
  • 主从写入冲突:Slave默认禁止写入,强制写入会报错;若需临时提升Slave为主库,需执行SLAVEOF NO ONE。
  • 主机故障处理:主机宕机后,从库不会自动上位,需手动执行SLAVEOF NO ONE将指定从库提升为主库;原主机恢复后默认变为独立节点,需重新配置slaveof加入集群。

4. 高级特性与优化

  • 薪火相传:支持链式复制(如A→B→C),减轻Master压力,但链条过长可能增加延迟。
  • 哨兵模式(Sentinel):通过监控多个Master实现故障自动切换。配置步骤包括:

    创建sentinel.conf文件,定义监控目标(如sentinel monitor mymaster 127.0.0.1 6379 1,末尾数字为投票阈值)。

    启动哨兵(redis-sentinel /path/to/sentinel.conf),哨兵组会投票选出新主库,原主库恢复后变为从库。

  • 复制延迟问题:高并发场景下,Slave可能因同步延迟导致数据不一致,可通过减少Slave数量优化网络带宽缓解。

5. 缺点与注意事项

  • 复制延迟:全量复制耗时较长,增量复制依赖网络稳定性,系统繁忙时延迟加剧。
  • 配置丢失风险:动态配置的slaveof在重启后会失效,需写入配置文件或通过哨兵模式管理。