01-主从复制概述
-  单机redis存在的问题 - ①硬盘故障, 导致数据丢失, redis不好用;
- ②内存容量受限制, 单台服务器内存扩展有上限, 内存数据超过该上线, 该如何处理.
 
-  解决方案 -   
-  1个master可以有多个slave, 1个slave只能对应1个master 
-  master: 主机, 可以读也可以写, 主要负责写. 
-  slave: 从机, 只能读. 
-  保证master和slave数据同步. 
 
-  
-  主从复制 - 将master中的数据实时地, 有效地同步到从机.
 
-  好处 - 读写分离: master只负责写, slave只负责读
- 负载均衡: 多台redis服务器分担客户端负载
- 故障恢复: master宕机, 由slave提供服务
- 数据冗余: 数据备份到多台redis服务器
- 高可用: 是哨兵和集群的基础
 
02-主从复制搭建及演示
-  需求 - 搭建1主1从的结构
 
-  配置说明 #从机的配置文件 slaveof 主机ip 主机port
-  ①master配置文件 port 6379 daemonize no # logfile "log-6379.log" maxclients 100000 timeout 0 loglevel debug # RDB设置 # 1.设置rdb文件名 dbfilename "dump-6379.rdb" # 2.设置rdb文件存储路径 dir /usr/local/redis-6379/data # 3.设置存储rdb时是否压缩数据 rdbcompression no # 4.设置读写文件过程是否进行RDB格式校验 rdbchecksum no # 5.后台存储过程中如果出现错误现象,是否停止保存操作 stop-writes-on-bgsave-error yes # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令 save 10 2 # AOF设置 # 1.开启aof持久化功能 appendonly yes # 2.设置aof文件名 appendfilename 'appendonly-6379.aof' # 4.设置aof策略 appendfsync everysec # 5.当前aof文件大小达到64mb,自动触发AOF重写 auto-aof-rewrite-min-size 64mb # 5.当前aof文件大小比之前aof文件大小增加了100%,自动触发AOF重写 auto-aof-rewrite-percentage 100 protected-mode no
-  ②slave配置文件 port 26379 daemonize no # logfile "log-26379.log" maxclients 100000 timeout 0 loglevel debug # RDB设置 # 1.设置rdb文件名 dbfilename "dump-26379.rdb" # 2.设置rdb文件存储路径 dir /usr/local/redis-26379/data # 3.设置存储rdb时是否压缩数据 rdbcompression no # 4.设置读写文件过程是否进行RDB格式校验 rdbchecksum no # 5.后台存储过程中如果出现错误现象,是否停止保存操作 stop-writes-on-bgsave-error yes # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令 save 10 2 # AOF设置 # 1.开启aof持久化功能 appendonly yes # 2.设置aof文件名 appendfilename 'appendonly-26379.aof' # 4.设置aof策略 appendfsync everysec # 5.当前aof文件大小达到64mb,自动触发AOF重写 auto-aof-rewrite-min-size 64mb # 5.当前aof文件大小比之前aof文件大小增加了100%,自动触发AOF重写 auto-aof-rewrite-percentage 100 protected-mode no #主机ip和主机port slaveof 192.168.199.110 6379
-  ③启动主机 
-  ④启动从机 
-  ⑤演示主从结构 - 分别使用redis客户端链接主机和从机操作读写指令.
 
03-主从复制之建立链接阶段
-  建立链接阶段 
-  总结 - ①master保存了slave的port
- ②slave保存了master的host和port
- ③master和slave建立心跳机制(ping/pong)
 
04-主从复制之数据同步阶段
-  数据同步阶段 
-  总结 - ①第一次链接, 通过全量复制(RDB)将master的数据备份到slave
- ②后续的指令, 通过部分复制(AOF)将master的数据备份到slave
 
05-部分复制的三要素
- 三要素 
  - ①服务器运行id(run id)
- ②主服务器的复制缓冲区
- ③主从服务器的复制偏移量
 
- ①服务器运行id(run id) 
  
- ②主服务器的复制缓冲区 
  
- ③主从服务器的复制偏移量 
  - 从机应该从哪里开始执行部分复制
- 1个master有多个偏移量, 1个slave有一个偏移量
 
06-主从复制之命令传播阶段
- 命令传播阶段 
  - 当master数据库状态被修改后,导致主从服务器数据库状态不一致,此时需要让主从数据同步到一致 的状态,同步的动作称为命令传播 master将接收到数据变更命令发送给slave,slave接收命令后执行
 
- 网络出现问题 
  - 网络闪断闪连,可以忽略
- 短时间网络中断,部分复制 (AOF)
- 长时间网络中断,全量复制(RDB)
 

























