К основному содержимому

Миграция данных Redis: перенос через RDB, AOF, replicaof

Миграция · 29.09.2026

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

Redis переносят при смене хостинга, апгрейде сервера или переходе с shared-тарифа на VDS. Выбор способа зависит от того, можно ли остановить приложение на несколько минут и сколько данных хранится в базе.

Есть три рабочих варианта: снимок RDB, журнал AOF и живая репликация через replicaof. Для базы до 1 ГБ подходит RDB-снепшот. Для баз с более строгими требованиями к сохранности каждой записи используют AOF. Если простой недопустим — переносят через репликацию.

Перенос через RDB-снепшот

RDB — это бинарный дамп всей базы в один файл dump.rdb. Способ подходит, если можно остановить запись на 1-2 минуты.

На старом сервере форсируем сохранение снепшота и копируем файл:

redis-cli -h 127.0.0.1 -p 6379 SAVE
scp /var/lib/redis/dump.rdb root@newserver:/var/lib/redis/dump.rdb

На новом сервере Redis должен быть остановлен на момент копирования файла, иначе процесс перезапишет его собственным снепшотом при следующем сохранении. Путь к файлу задаётся директивами dir и dbfilename в redis.conf.

Перенос через AOF-журнал

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

Включите AOF на старом сервере заранее, дождитесь ротации и перенесите каталог с данными:

redis-cli CONFIG SET appendonly yes
redis-cli BGREWRITEAOF
rsync -avz /var/lib/redis/appendonlydir/ root@newserver:/var/lib/redis/appendonlydir/

После копирования в redis.conf на новом сервере укажите appendonly yes и запустите сервис — Redis восстановит состояние, проигрывая журнал.

Живая миграция через replicaof

Команда replicaof (в старых версиях — slaveof) превращает новый сервер в реплику старого. Данные копируются автоматически, без остановки приложения.

redis-cli -h newserver -p 6379 REPLICAOF oldserver 6379
redis-cli -h newserver -p 6379 INFO replication

Дождитесь строки master_link_status:up и совпадения master_repl_offset на обеих сторонах. После этого переключите приложение на новый адрес и отключите репликацию командой REPLICAOF NO ONE.

Особенности переноса Redis Cluster

В кластерном режиме нельзя просто скопировать один dump.rdb — данные разбиты по 16384 хэш-слотам между узлами. Добавляйте новые узлы в кластер командой redis-cli --cluster add-node, а затем перераспределяйте слоты через redis-cli --cluster reshard.

ПараметрRDBAOFreplicaof
Простой1-2 минуты1-2 минутыnear-zero
Риск потери данныхсреднийнизкийминимальный
Подходит для кластеранетнетда

Проверка данных после переноса

Сравните количество ключей и контрольные значения на обоих серверах:

redis-cli -h oldserver DBSIZE
redis-cli -h newserver DBSIZE
redis-cli -h newserver INFO keyspace

Проверьте TTL у ключей с истечением срока действия — при переносе через RDB и AOF относительное время жизни ключа сохраняется корректно. Полный порядок действий для финальной сверки сайта описан в чек-листе проверки после миграции.

Итог: чек-лист миграции Redis

  • Определите допустимое время простоя и выберите RDB, AOF или replicaof.
  • Зафиксируйте версию Redis — миграция между 6.x и 7.x проходит без проблем, но возможности проверьте заранее.
  • Перенесите файл конфигурации redis.conf отдельно, не полагаясь на значения по умолчанию.
  • Сверьте DBSIZE и ключевые счётчики на старом и новом сервере.
  • Обновите адрес подключения в приложении и снимите старый сервер с нагрузки только после проверки.

Если рядом с Redis переносится ещё и база MySQL или документная база вроде MongoDB, планируйте окно миграции по самому медленному компоненту.

← Назад в базу знаний Задать вопрос поддержке