Практическое задание

Эта задача — шаг 3 курса «Redis в проде»

Бэкап RDB через BGSAVE

средне~10 мин

В Redis лежат заказы (order:*) и клиенты (customer:*) — всего 500 ключей. Автоматические снимки на сервере отключены, а dump.rdb в каталоге данных устарел.

Сделай свежий бэкап:

  1. запусти фоновый снимок командой BGSAVE (без блокирующего SAVE);
  2. дождись, пока он завершится;
  3. скопируй получившийся файл в /root/backup/dump.rdb.

Данные в Redis не меняй.

Что потренируешь:
  • redis
  • RDB
  • BGSAVE
  • LASTSAVE
  • redis-check-rdb
  • бэкап

Разбор темы

RDB — компактный снимок всего датасета на момент времени. SAVE пишет его в основном потоке и блокирует все запросы до конца записи, поэтому в проде используют BGSAVE: Redis делает fork(), и дочерний процесс пишет снимок, пока родитель продолжает обслуживать клиентов (благодаря copy-on-write памяти копия согласована на момент fork). Команда возвращает управление сразу, так что бэкап-скрипт обязан дождаться окончания — по INFO persistence или по изменению LASTSAVE — и проверить результат. Иначе легко забрать старый dump.rdb или недописанный временный файл. redis-check-rdb проверяет целостность снимка без запуска сервера.

Что проверяется

  1. копия — целый RDB-файл
  2. в копии все 500 ключей
  3. свежий снимок сделан через BGSAVE

Как это выглядит