Aerospike社区版4.x记录自动删除问题排查求助
Aerospike记录自动删除排查方案
1. 检查记录过期(TTL)相关配置
- 查看namespace默认TTL设置:执行
asadm -e "show config namespace/<namespace>" | grep ttl,若default-ttl值不为0,所有未单独设置TTL的记录会在对应时长后自动过期删除。 - 验证单条记录的TTL:用
aql执行select * from <namespace>.<set> where PK='<your-key>',查看返回结果的ttl字段(单位秒),判断是否已达到过期时间。
2. 分析Aerospike核心日志
- 检查默认路径
/var/log/aerospike/aerospike.log,搜索以下关键字定位删除原因:expired:记录过期删除的日志,格式示例:INFO (expire): (expire.c:306) <namespace>: expired <number> objects, <number> in backgrounddelete:显式删除操作的日志,可排查是否有非预期的客户端删除请求
- 快速过滤日志:
grep -E 'expired|delete' /var/log/aerospike/aerospike.log | tail -100
3. 确认存储与清理策略配置
- 检查磁盘碎片整理相关配置:执行
asadm -e "show config namespace/<namespace>" | grep defrag,若defrag-lwm-pct设置过低,碎片整理过程中会清理已标记删除的记录(仅针对逻辑删除的条目,不影响活跃数据)。 - 再次验证水位相关配置:执行
asadm -e "show config namespace/<namespace>" | grep -E 'high-water-disk|high-water-memory|stop-writes-pct',确认是否有未注意到的阈值触发了隐性清理逻辑。
4. 排查业务端误删除操作
- 检查业务代码中是否存在定时清理、批量删除逻辑,或客户端SDK是否有自动删除的默认行为。
- 启用审计日志追踪操作:在
aerospike.conf中添加enable-audit true,重启服务后,日志会记录所有写操作(含删除),可通过grep 'DELETE' /var/log/aerospike/aerospike.log排查非预期删除请求。
5. 验证集群数据一致性(若为集群部署)
- 查看节点状态:执行
asadm -e "show nodes",确认所有节点正常在线,无异常下线记录。 - 检查分区副本数据:执行
asadm -e "show partition-stats <namespace>",对比各副本的objects计数,若存在副本数据缺失,可能是同步异常导致记录丢失。
内容的提问来源于stack exchange,提问作者Ishan Khan
相关产品推荐
相关产品推荐

