如何增/减/删除appendonly.aof的持久化卷?(非Docker环境)
针对appendonly.aof持久化卷的增/减/删除操作方案(非Docker环境)
操作前通用注意事项
- 操作前必须备份当前appendonly.aof文件,避免数据丢失:
cp /path/to/current/appendonly.aof /path/to/backup/appendonly.aof.bak - 停止Redis服务,避免操作过程中AOF文件被写入:
systemctl stop redis(systemd管理场景)或kill $(pidof redis-server)(直接终止进程) - 确保目标卷的权限匹配Redis运行用户要求,比如Redis以
redis用户运行时,执行chown -R redis:redis /target/volume/path
一、增加持久化卷(无法直接扩容时的迁移方案)
当现有卷无法扩容时,通过迁移AOF文件到更大的新卷实现扩容:
- 在新卷创建Redis数据目录:
mkdir -p /new/larger/volume/redis-data - 复制当前AOF文件到新目录:
cp /old/volume/redis-data/appendonly.aof /new/larger/volume/redis-data/ - 修改Redis配置文件
redis.conf:- 找到
dir配置项,替换为新卷的Redis数据目录:dir /new/larger/volume/redis-data - 确认
appendfilename配置(默认值为appendonly.aof,无需修改,自定义名称除外)
- 找到
- 调整新目录权限:
chown -R redis:redis /new/larger/volume/redis-data - 启动Redis服务:
systemctl start redis - 验证:登录
redis-cli执行info persistence,查看aof_current_size和dir路径是否正确,同时执行数据读写操作确认正常
二、减少持久化卷(迁移至更小的卷)
前提:当前AOF文件大小小于目标卷可用空间,建议先压缩AOF文件冗余内容
- (可选)压缩AOF文件:登录
redis-cli执行bgrewriteaof,等待重写完成(通过info persistence查看aof_rewrite_in_progress是否为0) - 停止Redis服务(同通用步骤)
- 在新的小卷创建Redis数据目录:
mkdir -p /new/smaller/volume/redis-data - 复制压缩后的AOF文件到新目录:
cp /old/volume/redis-data/appendonly.aof /new/smaller/volume/redis-data/ - 修改
redis.conf的dir配置为新目录路径 - 调整新目录权限,启动Redis服务
- 验证:同增加卷的验证步骤,确认数据完整且AOF正常写入
三、删除持久化卷(停止AOF持久化并移除卷关联)
- 停止Redis服务
- 修改
redis.conf,将appendonly yes改为appendonly no,关闭AOF持久化 - (可选)删除原AOF文件:
rm /old/volume/redis-data/appendonly.aof - 若要完全解除卷关联,可将Redis数据目录迁移至其他路径(或切换为RDB持久化),然后卸载原持久化卷
- 启动Redis服务,执行
info persistence确认aof_enabled为0
内容的提问来源于stack exchange,提问作者Md Saba Karim
相关产品推荐
相关产品推荐

