Redis, кажется, удаляет dump.rdb при запуске.Использование Kubernetes PVC и KubeDB.Почему это происходит? - PullRequest
0 голосов
/ 28 июня 2019

Мы используем 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.

1 Ответ

1 голос
/ 28 июня 2019

Тааак, через несколько часов мой напарник вспомнил, что Redis выполняет сохранение в дамп при shutdown .

Вместо удаления модуля с помощью kubectl delete 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'
...