排除 AOF 重写的空间不足
上次更新 2024 年 4 月 18 日
故障现象
我收到导致 AOF 重写空间不足的错误。
解决方案
由于重写 AOF 文件可能占用大量的磁盘空间,我们建议将持久存储(默认位置 /var/opt/redislabs/persist
)调整为节点内存的 3-6 倍大小。
请参阅 文档 了解调整大小的建议。
分片分布
如果可能,请确保从属分片在集群节点中均匀分布,以便所有节点都能分担磁盘空间的使用。使用 API 请求 GET /v1/nodes 验证持久性文件的位置,然后查看 persistent_storage_path
的值。一个示例 JSON 正文为
[
{
"uid": 1,
"status": "active",
"uptime": 262735,
"total_memory": 6260334592,
"software_version": "0.90.0-1",
"ephemeral_storage_size": 20639797248,
"persistent_storage_path": "/var/opt/redislabs/persist",
"persistent_storage_size": 20639797248,
"os_version": "Ubuntu 14.04.2 LTS",
"ephemeral_storage_path": "/var/opt/redislabs/tmp",
"architecture": "x86_64",
"shard_count": 23,
"public_addr": "",
"cores": 4,
"rack_id": "",
"supported_database_versions": [
{
"db_type": "memcached",
"version": "1.4.17"
},
{
"db_type": "redis",
"version": "2.6.16"
},
{
"db_type": "redis",
"version": "2.8.19"
}
],
"shard_list": [1, 3, 4],
"addr": "10.0.3.61"
},
{
"uid": 1,
"status": "active",
"// additional fields..."
}
]
根据前一个命令的结果,验证有足够磁盘空间,例如使用
df -h /var/opt/redislabs/persist
根据要求,持久存储的大小应该比 RAM(节点 RAM)大三倍。
- 检查持久性目录中是否存在“*.aof. prev”文件。如果不用,请将其删除。
- 在极端写入场景中,当 AOF 启用时,AOF 重写进程可能需要显着更多的磁盘空间来进行数据库持久性。
参考资料
请参阅以下文档了解更多有关该主题的信息。