解决 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 重写过程可能需要更多磁盘空间才能进行数据库持久化。
参考资料
请参阅以下文档以了解有关该主题的更多信息。