问题描述
我正在使用组合国防部-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
BGREWRITEAOF
配置为appendonly
, no
也将起作用。但是,请注意,每次调用BGREWRITEAOF
时,都会在appendonly.aof文件中得到一个rdb文件。
然后,如果将appendonly
配置为yes
,则还会得到一个AOF尾部(命令将附加到appendonly.aof文件中)。
BGREWRITEAOF
和BGSAVE
是昂贵的操作,它们在运行时会降低服务器的性能。因此,我建议您仅使用AOF,它已经为您自动或每次运行BGREWRITEAOF
进行日志压缩。
您可以将auto-aof-rewrite-percentage
设置为较低的值,例如2%或5%。然后,您可以使用两种策略测试MTTR(重新启动所需的时间)。我敢肯定,您会发现差异太小,无法将两种策略(RDB和AOF)分开组合才有意义。如果aof-use-rdb-preamble
yes