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

> Миграция данных Redis между серверами: снимок RDB, журнал AOF и живая репликация replicaof. Разбираем команды, риски потери данных и перенос кластера.

## Когда переносить 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`.

| Параметр | RDB | AOF | replicaof |
| --- | --- | --- | --- |
| Простой | 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 относительное время жизни ключа сохраняется корректно. Полный порядок действий для финальной сверки сайта описан в [чек-листе проверки после миграции](https://www.zevshost.net/ru/kb/migratsia-proverka-posle/).

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

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

Если рядом с Redis переносится ещё и [база MySQL](https://www.zevshost.net/ru/kb/perenesti-bazu-dannykh/) или документная база вроде [MongoDB](https://www.zevshost.net/ru/kb/migratsia-mongodb/), планируйте окно миграции по самому медленному компоненту.

---

Источник: https://www.zevshost.net/ru/kb/migratsia-redis-dannyh/
