Mor*_*lst 2 redis kubernetes kubernetes-pvc kubedb
我们在集群中使用KubeDB来管理我们的数据库。
因此 Redis 是通过KubeDB Redis 对象部署的,KubeDB 将 PVC 附加到 Redis pod。
不幸的是,KubeDB 尚不支持任何 Redis 转储的恢复或备份。
对于备份,我们的解决方案是运行 CronJob,它将dump.rdbRedis 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
....
Run Code Online (Sandbox Code Playgroud)
复制工作。该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。
Sooo,几个小时后,我的队友记得 Redis 执行 save to dump on shutdown。
kubectl delete pod我现在没有使用删除 pod 来更改代码以SHUTDOWN NOSAVE使用redis-cli.
kubectl exec <redis-pod> -- /bin/bash -c 'redis-cli -a $(cat /usr/local/etc/redis/redis.conf | grep "requirepass " | sed -e "s/requirepass //g") SHUTDOWN NOSAVE'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |