redis-主从复制

 1.主从复制

1.1简介

主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

redis-主从复制_第1张图片

1.2作用

1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

2、故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

4、读写分离:可以用于实现读写分离,主库写、从库读,读写分离不仅可以提高服务器的负载能力,同时可根据需求的变化,改变从库的数量。

5、高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础

2.复制原理

  • Slave启动成功连接到master后会发送一个sync命令
  • Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
  • 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  • 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
  • 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

redis-主从复制_第2张图片

3.一仆二主

3.1找到原始的redis.conf 文件

3.2创建伪集群

3.2.1创建一主两从配置文件

redis-主从复制_第3张图片

3.2.2配置各配置文件

redis-主从复制_第4张图片

3.2.4启动三台服务器

redis-server  /usr/local/myredis/redis6381.conf

指定配置文件启动服务

3.2.5进入命令行 (指定端口号)

查看运行状态 :info replication

redis-主从复制_第5张图片

3.2.6配置从服务器

没有设置主从关系的话,每一台服务器都是master

3.2.6.1从服务器中info replication
redis-主从复制_第6张图片3.2.6.1主服务器info replication

redis-主从复制_第7张图片 4.薪火相传

4.1后面的从节点把主节点设置为上一个节点

4.2即使主节点也是从节点

redis-主从复制_第8张图片

4.3概括图

4.4缺点

如果中间的宕机了,则集群就瘫痪了

4.5反客为主(手动挡)

4.5.1让主节点宕机

4.5.2让从节点成为主节点

slaveof no one

redis-主从复制_第9张图片 5.哨兵机制(sentinel)

主从配置成一主二从

哨兵选举机制,如果有半数节点发现某个异常节点,共同决定改异常节点的状态,如果该节点是主节点,对应的备节点自动顶替为主节点。Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

5.1编写哨兵配置文件

名字不要写错 sentinel.conf

redis-主从复制_第10张图片5.2监听

redis-主从复制_第11张图片

当主机挂掉,从机选举中产生新的主机

主机改变成6382了

5.3自动监听

redis-主从复制_第12张图片5.4关于旧主机恢复正常

原主机重启后会变为从机

5.5图示更改过程

redis-主从复制_第13张图片

5.6优先级

优先级在redis.conf中默认:replica-priority 100,值越小优先级越高

偏移量是指获得原主机数据最全的

每个redis实例启动后都会随机生成一个40位的runid

你可能感兴趣的:(redis,redis,数据库,缓存)