Как скопировать выбранные ключи Redis на другой сервер?

admin

[https://redis.io/ Redis] – простое, быстрое и удобное key-value хранилище данных. При масштабирование любого приложения возникает необходимость переноса данных между серверами. Иногда не нужно переносить всю базу, а только несколько выбранных ключей.

Проверка версии redis

Первое что нужно сделать убедиться что на обоих серверах одинаковая версия Redis, выполняем команду:

redis-server --version

В ответ получим информацию о версии:

Redis server v=**3.0.3** sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=58013d157c63182b

Если версии не совпадают, то нужно на одном из серверов обновить redis, после чего перейти непосредственно к переносу. В redis данные можно перенести разными способами, мы рассмотрим два наиболее простых. Для удобства сервер с которого переносим назовем A, сервер куда переносим B.

Установка связи между серверами redis

Для первого способа между серверами нужно установить связь. Заходим на сервер B и открываем конфиг redis который находиться по пути /etc/redis/redis.conf, находим параметр bind и изменяем значение на 0.0.0.0.

Для проверки связи между серверами запускаем на сервере A команду:
redis-cli -h **$target_host** -p **$target_port**

$target_host и $target_port берем с сервера В, в ответ после запуска команды должны получить надпись PONG

Непосредственно перенос данных

После чего на сервере A запускаем команду переноса:

redis-cli --scan --pattern '**$pattern**' | while read key; do echo "Copying $key";

redis-cli --raw -h **$source_host** -p **$source_port** -n **$source_db** DUMP "$key" | head -c -1|

redis-cli -x -h **$target_host** -p **$target_port** -n **$target_db** RESTORE "$key" 0; done

$pattern – регулярное выражение по которому выбираем ключи;

$source_* – параметры сервера A;

$target_* – параметры сервера B;

После чего проверяем наличие ключей на обоих серверах и меняем параметр bind обратно на 127.0.0.1

Бекап в файлы и восстановление через restore

Для второго способа необходимо сделать:

    1. 1. На сервере A сделать бекап ключей redis в файлы, это просто сделать с помощью команды:
      redis-cli --scan --pattern "**$pattern**" | while read key; do echo "Copying $key";

      redis-cli --raw -h **$source_host** -p **$source_port** -n **$source_db** DUMP "$key" | head -c -1 > move_$key; done


      Получим много файлов с префиксом move_ это наши ключи redis которые соответствуют $pattern.
    1. 2. Переносим их на сервер B.
    1. 3. На сервере B необходимо выполнить выполнить команду [https://redis.io/commands/restore restore] для redis:
      cat **$file_name** | redis-cli -x restore **$key_name** 0;
      Для restore всех файлов за один раз можем использовать команду:
      for f in **~/move_t***; do cat $f | redis-cli -x restore "**${f//root/move_t/t}**" 0; done

<h2>TL;DR

Перенос выбранных ключей redis на другой сервер можно осуществить с помощью простой команды:
redis-cli --scan --pattern '**$pattern**' | while read key; do echo "Copying $key";

redis-cli --raw -h **$source_host** -p **$source_port** -n **$source_db** DUMP "$key" | head -c -1|

redis-cli -x -h **$target_host** -p **$target_port** -n **$target_db** RESTORE "$key" 0; done

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023