我们在集群中使用KubeDB来管理我们的数据库。
所以 Redis 是通过KubeDB Redis 对象部署的,KubeDB 将 PVC 附加到 Redis pod。
不幸的是,KubeDB 不支持任何 Redis 转储的恢复或备份(目前)。
对于备份,我们的解决方案是运行 CronJob,它将dump.rdb
Redis pod 中的数据复制到作业 pod 中,然后将其上传到 S3。
对于转储的恢复,我也想做同样的事情,只是反过来。有一个临时 pod,它下载 S3 备份,然后将其复制到 Redis pod 到该dump.rdb
位置。
redis.conf
看起来像这样:
....
# The filename where to dump the DB
dbfilename dump.rdb
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /data
....
复制工作。位于dump.rdb
具有正确权限的正确位置。我通过在 Redis pod 中使用相同的redis.conf
. dump.rdb
正在毫无问题地加载到服务器中。
但是,由于我不想手动启动第二个 redis-server,所以我重新启动了 Redis pod(通过 kubectl delete pods)让 pod 拾取复制的dump.rdb
.
每次我删除 pod 时,它dump.rdb
都会被删除,并且dump.rdb
正在创建一个尺寸更小(93 字节)的新 pod。
我不认为这是 PVC 问题,因为我创建了一些文件来测试它们是否也被删除。他们不是。只有dump.rdb
.
为什么会这样?我期望 Redis 只是从数据库中恢复数据库dump.rdb
而不是创建一个新数据库。
编辑:是的,大小dump.rdb
约为 47 GB。Redis 版本是 4.0.11。