[https://redis.io/ Redis] – простое, быстрое и удобное key-value хранилище данных. При масштабирование любого приложения возникает необходимость переноса данных между серверами. Иногда не нужно переносить всю базу, а только несколько выбранных ключей.
Первое что нужно сделать убедиться что на обоих серверах одинаковая версия 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.
Для первого способа между серверами нужно установить связь. Заходим на сервер 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
Для второго способа необходимо сделать:
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
cat **$file_name** | redis-cli -x restore **$key_name** 0;
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 в Украине, особенно для…
В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…
Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…
Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…
Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…
IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…