Мы используем KubeDB в нашем кластере для управления нашими БД.
Таким образом, Redis развертывается с помощью объекта KubeDB Redis , а KubeDB присоединяет PVC к модулю Redis.
К сожалению, KubeDB не поддерживает восстановление или резервное копирование дампов Redis (пока).
Для резервного копирования наше решение должно иметь запущенный CronJob, который копирует dump.rdb
из модуля Redis в модуль задания и затем загружает его на S3.
Для восстановления дампа я хотел сделать то же самое, только наоборот. Имейте временный модуль, который загружает резервную копию S3, а затем копирует ее в модуль Redis в папку 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 в модуле Redis, используя тот же redis.conf
. dump.rdb
загружается на сервер без проблем.
Однако, поскольку я не хочу вручную запускать второй сервер Redis, я перезапустил модуль Redis (с помощью модулей удаления kubectl), чтобы модуль мог забрать скопированные dump.rdb
.
Каждый раз, когда я удаляю модуль, dump.rdb
удаляется, и создается новый dump.rdb
с гораздо меньшим размером (93 байта).
Я не считаю, что это проблема PVC, так как я создал несколько файлов, чтобы проверить, удаляются ли они также. Они не. Только dump.rdb
.
Почему это происходит? Я ожидаю, что Redis просто восстановит базу данных из dump.rdb
и не создаст новую.
РЕДАКТИРОВАТЬ: Да, размер dump.rdb
составляет около 47 ГБ. Версия Redis 4.0.11.