Быть в курсе
Аватарка автора Редакция Рег.облако
ИнструкцииОблако

Как создавать резервные копии в Redis

17 сентября 2025

10 минут

Телеграм

ВКонтакте

Резервное копирование — это одна из главных задач при работе с базами данных, и Redis не исключение. Потеря данных из-за сбоев или ошибок может привести к серьезным проблемам. В этой статье разберем, как правильно создавать резервные копии в Redis на примере Ubuntu 24.04, чтобы ваши данные всегда были под защитой.

Решения Рег.облака обеспечивают надежное хранение данных, гибкое масштабирование и контроль затрат. Вы получаете готовую инфраструктуру для работы с базами данных и резервными копиями, а команда может сосредоточиться на развитии продукта.

Что нужно знать перед резервным копированием в Redis

Redis предлагает два основных способа хранения данных: RDB-снимки (Redis Database) и AOF-логи (Append Only File).

RDB-снимки позволяют создавать полные точечные копии всех данных в заданные моменты времени. Их удобно делать для быстрого восстановления большого объема информации, но при конфликте между двумя снимками часть новых данных может быть утеряна.

AOF-логи записывают каждую команду изменения данных, благодаря чему можно восстановить состояние базы вплоть до последней операции. Этот способ позволяет минимизировать потери, но требует больше места и может быть медленнее при восстановлении больших массивов данных.

Для максимальной надежности Redis поддерживает гибридный режим, в котором одновременно используются оба подхода: RDB-снимки создают базовый слой резервных данных, а AOF-логи записывают все изменения между снимками.

Если вы планируете использовать Redis в критически важных или нагруженных проектах, рекомендуем размещать БД на выделенном VPS или dedicated-сервере с быстрыми NVMe-дисками.

Также перед настройкой резервного копирования стоит учесть частоту создания резервных копий, требования к хранению (объем и место размещения файлов), а также продумать стратегию восстановления: где будут храниться резервные копии, как часто тестируется восстановление и насколько быстро вы сможете вернуть систему к работе в случае сбоя.

Источник: Freepik. Перед настройкой резервного копирования в Redis стоит учесть частоту создания резервных копий

Как настроить RDB-снимки

Настройка RDB-снимков позволяет регулярно сохранять текущее состояние данных и в случае сбоя быстро восстановить работу сервиса.

Важно понимать: RDB-снимки не фиксируют абсолютно каждое изменение, а сохраняют базу с определенной периодичностью — в зависимости от выбранных условий. Поэтому при восстановлении возможно потерять данные, внесенные между снимками.

1. Откройте основной конфигурационный файл Redis:

2. В нем укажите новые параметры, которые будут отвечать за частоту создания снимков.

Например:

Заданные параметры определяют частоту резервного копирования и позволяют подобрать оптимальный баланс между производительностью и надежностью.

3. Укажите место и имя файла снимка:

Важно! Убедитесь, что каталог /opt/redis/backups/ существует и доступен для записи процессу Redis.

4. Включите сжатие и проверку целостности файла:

5. После редактирования конфигурации выполните:

Источник: Freepik. RDB-снимки сохраняют базу с определенной периодичностью

Как настроить AOF-логирование

AOF (Append Only File) — это способ резервного копирования, при котором Redis записывает каждую команду изменения данных в отдельный файл. Благодаря ему можно восстановить базу практически до любого момента — вплоть до последней успешной операции.

AOF особенно полезен, если для вас критична минимальная потеря данных. В отличие от RDB-снимков, он позволяет сохранять все изменения, но и файлы получаются больше, и восстановление может занять больше времени.

1. Для начала откройте файл конфигурации Redis:

2. Далее включите AOF и задайте имя файла, в который будут сохраняться команды:

Где:

  • appendonly yes — включает режим логирования.
  • appendfilename "redis-log.aof" — имя файла, который будет использоваться для хранения команд.

3. Частота записи команд на диск задается параметром appendfsync. Он определяет, насколько быстро данные из журнала AOF будут сохраняться на жесткий диск.

Например:

Возможные значения:

  • appendfsync always — запись на диск происходит после каждой команды. Самый безопасный, но и в то же время самый медленный способ.
  • appendfsync everysec — запись происходит каждую секунду. Мы рекомендуем использовать его.
  • appendfsync no — запись поручается операционной системе — иными словами, Redis сам не контролирует момент записи данных на диск, а отдает файл ОС, и та записывает его тогда, когда сочтет нужным. Это быстрее, но повышает риск потери данных при ошибках.

4. AOF-файл может быстро увеличиваться в размере, поэтому Redis может автоматически переписывать его, чтобы уменьшить размер.

Для этого используются такие параметры:

Где:

  • auto-aof-rewrite-percentage 200 — файл будет переписан, если увеличился в 3 раза по сравнению с первоначальным размером.
  • auto-aof-rewrite-min-size 64mb — переписывание начнется только, если размер файла стал больше 128 МБ.

Они позволяют не только экономить место, но и ускоряют восстановление данных, потому что в файле будет меньше повторяющихся команд.

5. После внесения изменений в настройки перезапустите Redis, чтобы изменения вступили в силу:

Источник: Freepik. Резервные копии в Redis можно создавать по расписанию, без вашего участия

Как создать резервную копию вручную

Иногда нужно создать резервную копию Redis немедленно — например, перед обновлением или переносом базы данных. С этим вам помогут несколько команд:

  • redis-cli SAVE — сразу создает снимок базы, но на время выполнения блокирует все операции записи. Рекомендуется использовать только, если база небольшая и нагрузка невысокая.
  • redis-cli BGSAVE — запускает процесс создания снимка на фоне — так, чтобы он не мешал работе сервера. Это более безопасный и быстрый способ для рабочих систем.
  • redis-cli BGREWRITEAOF — запускает принудительное сжатие и обновление AOF-журнала без остановки основного процесса.
  • redis-cli INFO persistence — показывает, выполняются ли сейчас операции сохранения или переписывания, и какой у них статус. Полезна, чтобы убедиться, что фоновые задачи завершились.

Как автоматизировать резервное копирование Redis

Чтобы каждый раз не создавать резервные копии вручную, можно настроить автоматизацию — пусть бэкапы создаются по расписанию без вашего участия. Это защитит ваш проект от потери данных и сэкономит время.

Один из самых простых и надежных способов — использовать bash-скрипт вместе с cron:

1. Создайте файл, например backup_redis.sh, и добавьте в него следующий код:

Где:

  • BACKUP_DIR — путь к папке, где будут храниться бэкапы. Можно указать свою директорию, например /home/backup/redis.
  • REDIS_DIR — путь к директории, где Redis хранит свои файлы (например, dump.rdb и redis-log.aof).
  • redis-log.aof — имя журнала AOF.
  • 5 дней — срок хранения архивов. Если хотите дольше хранить бэкапы, измените значение в параметре -mtime +5 на нужное количество дней.

2. В терминале выполните:

3. Чтобы бэкапы создавались автоматически, откройте crontab для пользователя root:

4. Добавьте строку, чтобы запускать скрипт каждые 4 часа:

Где /path/to/backup_redis.sh — полный путь к вашему скрипту.

Источник: Freepik. Не забывайте регулярно делать копии в Redis и время от времени проверять их работоспособность

Как восстановить данные Redis из резервной копии

Восстановление данных Redis из резервной копии зависит от того, какой тип бэкапа вы используете — RDB или AOF.

Важно! На время восстановления сервер Redis должен быть остановлен, чтобы избежать конфликтов и потери данных:

1. Остановите Redis:

2. Если вы делали резервную копию с помощью RDB-снимка, скопируйте нужный файл в рабочую директорию Redis:

3. Если используете AOF-журнал, скопируйте ваш файл (в нашем случае — redis-log.aof):

4. Запустите Redis

5. Проверьте восстановление. Посмотрите статистику ключей и убедитесь, что данные на месте:

В Redis все данные — это ключи (например, user:123, session:456, product:789). Каждый ключ связан с каким-то значением: строкой, списком, хешем и так далее. А команда выше показывает, сколько всего ключей есть в каждой базе Redis.

Например:

db0:keys=150,expires=2,avg_ttl=60000

означает, что в базе данных 0 сейчас хранится 150 ключей (150 разных записей или объектов).

То есть, если число ключей совпадает с тем, что было до сбоя, она дает понять, что ваши данные восстановились. Если ключей нет — значит, восстановление не удалось или база пуста.

Заключение

Резервное копирование в Redis — не такая уж сложная задача, если разобраться с основными механизмами и подобрать удобный для себя способ. Выше мы рассмотрели, как работают RDB-снимки и AOF-логи, как их настраивать, создавать резервные копии и автоматизировать этот процесс.

Не забывайте регулярно делать копии и время от времени проверять их работоспособность. Это сэкономит вам время, нервы и убережет от неприятных сюрпризов, если что-то вдруг пойдет не так.

Новые статьи