AOF

RDB 存在的问题

  • 耗时
  • 耗性能

什么是 AOF

  • 客户端执行的每条命令都会写在 AOF 文件中;
  • 当发生宕机时,通过载入 AOF 文件恢复数据;

AOF 三种策略

always
  • 客户端执行的命令会存入缓冲区,always 策略会使命令一到缓冲区就写入磁盘;
  • 优点:不丢数据;
  • 缺点:IO 开销大;
everysec(默认)
  • 每秒将缓冲区的命令写入磁盘;
  • 优点:减少 IO;
  • 缺点:丢 1s 数据;
no
  • 操作系统决定什么时候把缓存中的数据刷入硬盘;
  • 优点:不用自己管;
  • 缺点:不可控;

AOF 重写

  • 把过期的数据丢弃;
  • 把重复的数据合并成最新值;
  • 减少磁盘占用量;
  • 加速恢复速度;

两种实现 AOF 重写的方式

bgrewriteaof
  • 客户端发起,fork 出一个子进程,完成对 AOF 文件的整合;
AOF 重写配置
  • auto-aof-rewrite-min-size AOF 文件重写需要到达的大小;
  • auto-aof-rewrite-percentage AOF 文件增长率,增长到这个比例就重写;
  • aof_current_size 实时记录 AOF 当前尺寸(单位:字节);
  • aof_base_size AOF 上次启动和重写的尺寸(单位:字节);

AOF 相关配置

  • appendonly yes
  • appendfilename "appendonly-${port}.aof"
  • appendfsync everysec
  • dir /bigdiskpath
  • no-appendfsync-on-rewrite yes 在 AOF 重写时,不做正常的 rewrite 操作;
  • auto-aof-rewrite-percentage 100
  • auto-aof-rewrite-min-size 64mb
  • aof-load-truncated yes

你可能感兴趣的:(AOF)