redis-从RDB加载并继续写入AOF

问题描述

我正在使用组合国防部-RDB + AOF。
我正在寻找一种从RDB文件重新启动后加载的方法-主要用于快速重新启动。
最重要的是,我想继续编写AOF。
知道有灾难后,我会从AOF手动加载。
这是我当前的配置:(我知道state: { APIData: {},},getters: { getFeed: state => {return state.APIData["test"] },mutations: { SET_Feed_DATA(state,{folder_id,data}) { state.APIData["test"] = data } },是说AOF将在重启后加载,我正在寻找RDB的等待加载并继续编写AOF。)

appendonly yes

谢谢

解决方法

如果两者都启用,Redis将始终加载AOF,因为AOF可以提供更好的耐用性。

通过使用aof-use-rdb-preamble yes,您已经获得了两全其美的机会。您的AOF会立即自动进行重写,然后自动进行,首先是RDB文件,然后是AOF尾部。参见redis.conf L1157

由于您希望有一个可预测的平均恢复时间(MTTR),因此要调整自动重写AOF的参数,如redis.conf LL113

中所述
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

您还可以使用BGREWRITEAOF command

手动触发AOF重写 即使将BGREWRITEAOF配置为appendonly

no也将起作用。但是,请注意,每次调用BGREWRITEAOF时,都会在appendonly.aof文件中得到一个rdb文件。

然后,如果将appendonly配置为yes,则还会得到一个AOF尾部(命令将附加到appendonly.aof文件中)。

BGREWRITEAOFBGSAVE是昂贵的操作,它们在运行时会降低服务器的性能。因此,我建议您仅使用AOF,它已经为您自动或每次运行BGREWRITEAOF进行日志压缩。

您可以将auto-aof-rewrite-percentage设置为较低的值,例如2%或5%。然后,您可以使用两种策略测试MTTR(重新启动所需的时间)。我敢肯定,您会发现差异太小,无法将两种策略(RDB和AOF)分开组合才有意义。如果aof-use-rdb-preamble yes

,则AOF已经为您提供了RDB内幕