来自docker镜像redis:6.2.5-alpine3.14的Redis无法启动“无效的LZF压缩字符串”

来自docker镜像redis:6.2.5-alpine3.14的Redis无法启动“无效的LZF压缩字符串”

使用 redis:6.2.5-alpine3.14 重新启动 docker 容器后,它无法启动并出现错误:

[offset 55130] Internal error in RDB reading offset 0, function at rdb.c:411 -> Invalid LZF compressed string

清理Redis存储后一切正常:

# ls -la /redis/
total 68
drwxr-xr-x.  2 polkitd 1000    43 Oct  4 19:22 .
drw-r-----. 14 root    root   179 Sep  8 19:51 ..
-rw-r--r--.  1 polkitd 1000 63907 Oct  4 19:13 dump.rdb
-rw-r--r--.  1 polkitd root  4096 Oct  4 19:22 .dump.rdb.swp

有人能解释一下这个问题的原因是什么吗?

答案1

这意味着 RDB 数据库已损坏。您应该停止容器并从备份中恢复文件。如果无法恢复,您可以重命名/移动它以获取损坏的备份,以防您想部分恢复它,然后启动 redis 容器。

如果这种情况经常发生,请检查澳大利亚联邦大学(仅附加文件)更适合您。您可以同时拥有 RDB 和 AOF。有关更多详细信息,请参阅揭秘 Redis 持久性

要检查 RDB 文件的一致性,您可以使用:

redis-check-dump dump.rdb

4.3.1 验证快照和仅附加文件更多细节。

如果你使用集群,你可以恢复其中一个节点和:

rladmin recover list  # To see the list of all files to be recovered

rladmin recover all
rladmin recover db <database_id|name>    # To recover only one DB
recover db only_configuration <db_name>  # To recover only the DB config

rladmin status     # To check which DBs were recovered

在集群中也可以恢复数据库和:

rladmin cluster recover ....

看:群集恢复文档

相关内容