1.主从复制
1.1简介
主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主
1.2作用
1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
2、故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
4、读写分离:可以用于实现读写分离,主库写、从库读,读写分离不仅可以提高服务器的负载能力,同时可根据需求的变化,改变从库的数量。
5、高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础
2.复制原理
- Slave启动成功连接到master后会发送一个sync命令
- Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
- 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
- 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
- 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行
3.一仆二主
3.1找到原始的redis.conf 文件
3.2创建伪集群
3.2.1创建一主两从配置文件
3.2.2配置各配置文件
3.2.4启动三台服务器
redis-server /usr/local/myredis/redis6381.conf
指定配置文件启动服务
3.2.5进入命令行 (指定端口号)
查看运行状态 :info replication
3.2.6配置从服务器
没有设置主从关系的话,每一台服务器都是master
3.2.6.1从服务器中info replication
3.2.6.1主服务器info replication
4.薪火相传
4.1后面的从节点把主节点设置为上一个节点
4.2即使主节点也是从节点
4.3概括图
4.4缺点
如果中间的宕机了,则集群就瘫痪了
4.5反客为主(手动挡)
4.5.1让主节点宕机
4.5.2让从节点成为主节点
slaveof no one
5.哨兵机制(sentinel)
主从配置成一主二从
哨兵选举机制,如果有半数节点发现某个异常节点,共同决定改异常节点的状态,如果该节点是主节点,对应的备节点自动顶替为主节点。Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。
5.1编写哨兵配置文件
名字不要写错 sentinel.conf
5.2监听
当主机挂掉,从机选举中产生新的主机
主机改变成6382了
5.3自动监听
5.4关于旧主机恢复正常
原主机重启后会变为从机
5.5图示更改过程
5.6优先级
优先级在redis.conf中默认:replica-priority 100,值越小优先级越高
偏移量是指获得原主机数据最全的
每个redis实例启动后都会随机生成一个40位的runid