title: 【学习之路】Redis主从复制
draft: true
tags:
- 学习之路
- Redis
categories: - 中间件
- Redis
cover: ‘https://cdn.jsdelivr.net/gh/CodeZixuan/Blog_Images/Redis主从复制/bg.jpg‘
description: Redis主从复制,哨兵机制概述
abbrlink: ee43f2b7
date: 2021-03-15 14:11:50
Redis主从复制概述
- redis主从复制是自动同步到备机的master/slaver机制,master以写为主,slave以读为主
- 主要是为了解决读写分离与容灾恢复
如何实现主从复制
- 输入
SLAVEOF 主机IP地址和端口
号让这台机器变成slaver - 通过
info replication
查看当前redis状态
主从复制细节问题
一主二仆
- 主机存入的key值在从机上可以取到
- 当一台主机还没有成为另一台主机的从机,主机提前存入key值,当另一台主机成为这台主机的从机也能取到该值
- 如果主机和从机要同时存入一个key,主机如果先存入当前key值从机再存入那么就会报错
- 当主机故障,数据还会保存,从机原地待命
- 当故障主机重新恢复,那么从机继续运行,可以取到主机新添加的值
- 当从机故障,不干扰其他从机正常运行,如果故障从机恢复那么会重新成为master,除非写进配置文件
薪火相传
- slave链接master下一台主机链接上一台slave
- 链接下一台主机的slave使用
info replication
查看的时候当前主机还是slave只是链接了另一台slave - 如果中途跟新链接会清除之前的数据,重新建立拷贝最新的
反客为主
- 当主机故障,可以使用
SLAVEOF no one
让从机变为主机,其他从机需要手动切换到该主机的从机 - 如果故障主机重新恢复,那么上面两台主机与恢复主机并没有任何关系
主从复制复制原理
- slave启动成功后连接到master后会发送一个sync命令,master接到命令后启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕后,master将传送整个数据文件到slave,已完成一次完全同步
- 全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中
- 增量复制:master继续将新的所有收集到的修改命令依次传给slave,完成同步
- 如果只要是重新链接master,全量复制就会被自动执行
哨兵模式(sentinel)
哨兵模式时反客为主的自动版本
打开sentinel.conf的文件
文件里写入
sentinel monitor [被监控数据库名字(自己起名字)] [主机IP] [端口] [如果票数大于多少让从机成为主机]
启动哨兵模式:redis-sentinel 配置文件路径
如果master故障,那么哨兵检测到之后,就会对master下的slave主机进行投票选出新的master
如果故障的master重新恢复,哨兵机制自动检测到之后,将恢复的master变为新选举出来master的slave
一组sentinel可以监视多个master