Как переместить базу данных Redis с одного сервера на другой? - PullRequest
165 голосов
/ 15 мая 2011

В настоящее время у меня есть работающий сервер Redis, работающий в облачном экземпляре, и я хочу перенести этот сервер Redis в новый облачный экземпляр и использовать этот экземпляр в качестве моего нового сервера Redis. Если бы это был MySQL, я бы экспортировал БД со старого сервера и импортировал ее на новый сервер. Как я должен сделать это с Redis?

P.S .: Я не ищу настройки репликации. Я хочу полностью перенести сервер Redis на новый экземпляр.

Ответы [ 13 ]

0 голосов
/ 08 сентября 2016

Ключевые элементы миграции с нулевым временем простоя:

  • репликация (http://redis.io/commands/SLAVEOF)
  • возможность записи в ведомое устройство при переключении приложений (CONFIG SET slave-read-only no)

Короче говоря:

  1. установить целевой redis (пустой) в качестве подчиненного источника redis (с вашими данными)
  2. дождаться окончания репликации
  3. разрешение на запись в целевой Redis (который в настоящее время является подчиненным)
  4. переключить ваши приложения на целевой Redis
  5. дождаться окончания потока данных от ведущего к подчиненному
  6. превратить целевой редис из главного в раб

Кроме того, у redis есть опции, которые позволяют отключить источник redis для приема записей сразу после отсоединения цели:

  • min-slaves-to-write
  • min-slaves-max-lag

Эта тема покрыта

Очень хорошее объяснение от команды RedisLabs https://redislabs.com/blog/real-time-synchronization-tool-for-redis-migration

И даже их интерактивный инструмент для миграции: https://github.com/RedisLabs/redis-migrate

0 голосов
/ 25 февраля 2016

Я только что опубликовал утилиту интерфейса командной строки для npm и github, которая позволяет копировать ключи, соответствующие заданному шаблону (даже *), из одной базы данных Redis в другую.

Утилиту можно найти здесь:

https://www.npmjs.com/package/redis-utils-cli

0 голосов
/ 21 января 2016

Я также хочу сделать то же самое: перенести базу данных из автономного экземпляра redis в другой экземпляр redis (redis sentinel).

Поскольку данные не являются критическими (данные сеанса), я дамhttps://github.com/yaauie/redis-copy попытка.

...