Redis_主从复制
Master-slaver
主机数据更新后根据配置和策略,自动同步到备用机的master/slaver机制
- Master 以写为主
- slaver 以读为主
- Slaver 只可以读取,不能写入
作用
- 读写分离
- 容灾恢复
常用方式
一主二仆
一台主机,多台备机
- Init
- 1个Master 两个 Slaver
- Info replication:查看主从情况
- Master 写入数据:宕机之后,从机不会变成主机,重启之后继续使用
- Slaver 读取数据 ,备份数据,宕机重启之后会自动增量备份
薪火相传
- 去中心化
- 减轻了主机master的负担
- 同步的延时
- 上一个Slaver可以是下一个slaver的Master,Slaver同样可以接受其他Slavers的连接和同步请求,那么该Slaver作为链条中下一个master,可以有效的减轻master的写压力
- 中途变更转向:会清除之前的数据,重新建立拷贝最新的
- Slaveof 新主机IP 新主机 端口
反客为主
- 从机 变 主机
- 在主机宕机了之后,变成了主机
- Slaveof no one 当前数据库停止与其他数据库同步,转成主数据库
哨兵模式sentinel
- 哨兵 -- 监控
- 反客为主的自动版本
- 从后台监控主机是否故障,如果故障了根据投票数自动将从库转化为i主库
- 一组 sentinel能同时监控多个Master
复制的原理
- Slaver启动成功连接到mater后会发送一个sync命令
- Matser接到命令之后启动后台的存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕之后,Mater将传送整个数据文件到slaver,以完成一次完全同步
- 全量复制: Slaver服务在接受到数据后,将其存盘并加载到内存
- 增量备份:Maser继续将新的所有收集到的修改命令依次传给Slaver,完成同步
- 但是只要是重新连接Master,一次完全同步(全量备份)将被自动执行
- 复制延迟
使用
从库配置:
slaveof 主库 IP 主库端口 SLAVEOF 127.0.0.1 6379
- 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
- Info replication
修改配置文件细节操作
- 拷贝多个redis.conf文件
- 开启 deamonize yes
- Pid文件名字
- 指定端口
- log文件名字
- Dump.rdb名字