redis 持久化 主从 哨兵 集群等

2020-10-19  本文已影响0人  laowangv2

1.持久化

方式

  1. RDB
  2. AOF
  3. RDB+AOF

RDB vs AOF

RDB的优缺点
AOF的优缺点

细节

RDB

使用方式

流程
fork一个子进程,将数据写入一个临时RDB文件,写完后替换旧文件

AOF

使用方式
appendonly yes # 配置开启,redis执行的命令会被追加到AOF文件

重写文件
手动调用BGREWRITEAOF 或通过配置文件
重写流程:fork一个子进程,子进程重写到临时文件,父进程将这段时间的命令追加到旧文件的同时积累到内存中,子进程写完后,父进程将内存中积累的命令写入新文件,替换新旧文件

刷盘策略

文件修复
redis-check-aof --fix

2.复制

使用方式

运作原理

  1. 从服务器发送SYNC命令到主
  2. 主服务器执行BGSAVE,期间的命令保存到内存
  3. 发送rdb文件到从
  4. 发送内存中保存的命令到从

部分重同步

需要version >= 2.8,通过PSYNC命令

  1. 主维护生成RDB之后收到的命令到复制积压缓冲区(FIFO队列)
  2. 从维护自己复制的offset
  3. 断线重连后,从发送自己的offset,如果还在复制挤压缓冲区中,则将offset之后的命令发送过来,否则只能执行一次全量的同步,过程同SYNC命令

注意

关闭主服务器持久化时,应禁止主服务器的自动拉起

3.哨兵

功能

  1. 监控
  2. 提醒
  3. 自动故障迁移

基本流程

故障转移

Sentinel之间和从服务器的自动发现

4.集群

使用集群的好处

  1. 将数据自动切分(split)到多个节点的能力。
  2. 当集群中的一部分节点失效或者无法进行通讯时, 仍然可以继续处理命令请求的能力。

分片

所有的key被分配到16384个槽内,分配算法:
CRC16(key) % 16384
添加或删除节点时,需要把哈希槽移动到相应的节点

主从

支持

一致性保证

节点超时时间

对于大多数一方来说, 如果一个主节点未能在节点超时时间所设定的时限内重新联系上集群, 那么集群会将这个主节点视为下线, 并使用从节点来代替这个主节点继续工作。
对于少数一方, 如果一个主节点未能在节点超时时间所设定的时限内重新联系上集群, 那么它将停止处理写命令, 并向客户端报告错误。

故障转移

主节点之间互相ping,如果没有回复则认为疑似下线并广播,如果半数节点广播了疑似下线,则将他标记为已下线,从节点中选举一个新的主节点

上一篇 下一篇

猜你喜欢

热点阅读