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

 RDB、AOF

redis 持久化有两种方式

RDB 快照:性能上稍微好一些。

快照方式,即设定多久进行一次数据快照。

恢复数据比AOF快,但是丢失的数据会比AOF方式要多。文件提交比AOF小。数据集大的时候,会让redis的性能低于AOF方式

RDB bgsave规则:

save 900 1
save 300 10
save 60 10000

只会保存一个dump.rdb。所以需要人工去考虑备份rdb文件。

rdb 备份的四种方式如上图

1.时点性

2.手动输入 save命令,执行前台阻塞备份

扫描二维码关注公众号,回复: 11373357 查看本文章

3.输入bgsave ,后台备份

4.配置文件中配置 save 秒数  修改次数 

缺点:

1.不支持拉链,只能保存一个 RDB 全量文件

2.丢失数据会多些

优点:

类似java中的序列化,恢复速度快

AOF 文件:安全系数较高

aof:每次的操作都会进行记录。

fsync策略:无fsync,每秒fsync,每次写的时候fsync。默认每秒fsync策略。最多丢失1秒的数据。

在一般情况下, 每秒 fsync 的性能依然非常高, 而关闭 fsync 可以让 AOF 的速度和 RDB 一样快。但是会不安全。

4.0以前:

重写:删除抵消的命令(增加和删除的操作抵消)、合并重复的命令。最终也是一个纯指令的日志文件

4/0以后:

重写:将老的数据 RDB 到 aof 中,将增量以指令的方式append 到 aof 中。aof 是一个混合体,利用了 RDB 的快和日志的全量。

AOF和RDB都会需要fork 子进程来进行进行保存,写时复制。Redis 执行 fork() ,同时拥有父进程和子进程。

可以同时开启RDB和AOF两种方式,也可以只选择一种。恢复的时候,如果开启了两种方式,只需要恢复AOF就可以了。

怎样从RDB方式切换为AOF方式

在 Redis 2.2 或以上版本,可以在不重启的情况下,从 RDB 切换到 AOF :

  • 为最新的 dump.rdb 文件创建一个备份。
  • 将备份放到一个安全的地方。
  • 执行以下两条命令:
  • redis-cli config set appendonly yes
  • redis-cli config set save “”
  • 确保写命令会被正确地追加到 AOF 文件的末尾。
  • 执行的第一条命令开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾。

执行的第二条命令用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能。

重要:别忘了在 redis.conf 中打开 AOF 功能! 否则的话, 服务器重启之后, 之前通过 CONFIG SET 设置的配置就会被遗忘, 程序会按原来的配置来启动服务器。

打开redis 目录下的redis.conf ,找到append-only no ,修改为yes,则开启aof保存。默认目录 dir ./ 当前目录,需要进行修改,否则会数据丢失。

在redis 命令行下 输入  bgsave ,会手动触发rdb文件保存

 aof 文件比较简单,

*3 : 后面跟着3个操作  $3、$2、$5.

$3 :输入了3个字符  ,   set  输入的字符为set

当aof文件比较大时,可以对aof文件进行重写,  BGREWRITEAOF  2.4之后会自动触发,2.4之前需要手工执行。

aof-use-rdb-preamble no 修改为yes,即开启aof和rdb混合模式。老版本没有!!

auto-aof-rewrite-percentage 100  当达到100%的时候进行重写压缩

auto-aof-rewrite-min-size 64mb  当达到64mb进行重写压缩

猜你喜欢

转载自blog.csdn.net/dandanforgetlove/article/details/106264226