redis的持久化RDB、fork、copyonwrite、AOF、RDB&AOF混合使用

单机持久化

RDB

  • RDB

  • 父子进程

  • fork copy-on-write

  • 问题:

    • 不支持拉链 只有一个dump.rdb
    • 丢失数据相对多一些,时间点与时间点之间的窗口数据容易丢失(8点得到一个rdb,9点刚要落一个rdb,挂机了)
  • 优点:

    • 类似java序列化, 恢复速度相对快

AOF

  • redis写操作记录到文件中

    • 丢失数据相对少
    • RDB和AOF可以同时开启(如果开启了AOF只会用AOF恢复,4.0以后AOF中包含RDB全量,增加记录新的写操作)
    • 弊端
      • 体量无限变大,恢复慢
      • 设计一个方案让AOF足够小
        • 4.0以前->重写->删除抵消的命令,合并重复的命令->最终也是一个纯指令的日志文件
        • 4.0以后->重写->将老的数据RDB到AOF文件中,将增量的以指令方式Append到AOF->AOF是一个混合体,利用的RDB的快,利用的日志的全量
  • 原点:redis是内存数据库

    • 写操作会触发IO
    • NO、always、每秒
      • no: don't fsync, just let the OS flush the data when it wants. Faster.
      • always: fsync after every write to the append only log. Slow, Safest.
      • everysec: fsync only one time every second. Compromise.
BGSAVE
redis-check-rdb dump.rdb

BGREWRITEAOF
1
2
3
4

主从复制

总字数: 380 字  上次更新: 2023-03-14 00:25:11