# Міграція даних 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/uk/kb/migratsia-proverka-posle/).

## Підсумок: чек-лист міграції Redis

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

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

---

Джерело: https://www.zevshost.net/uk/kb/migratsia-redis-dannyh/
