Самый быстрый способ скопировать 35 ГБ redis из одного экземпляра в другой (в стандарте Azure) - PullRequest
0 голосов
/ 25 мая 2018

У нас есть два экземпляра Azure Redis в Azure.Источник в «стандартных» настройках в Azure.Нам нужно скопировать все 35 ГБ из стандартной сборки в сборку премиум-класса (без миграции).

Какой метод лучше?Данные должны быть статичными.Вы не можете экспортировать данные в стандартном формате, вы также не можете шардировать.Мы увеличили размер, и нам нужно перейти к тому, который поддерживает шардинг.

1 Ответ

0 голосов
/ 31 мая 2018

1.Редактирование файла конфигурации

В целевом файле конфигурации Redis установлен

slaveof sourceIP sourcePort
slave-read-only no

Он будет эффективно реплицировать исходную базу данных в вашу новую, передав файл RDB.Затем вы можете закомментировать эти строки и закрыть исходный экземпляр.Обратите внимание, что старые ключи в целевом экземпляре не сохраняются и не перезаписываются.

2. CONFIG SET команда

Вам не поможет эта печальная история.

127.0.0.1: 6371> CONFIG SET slaveof "localhost 6370"
(ошибка) ERR Неподдерживаемый параметр CONFIG: slaveof

3. MIGRATE команда

MIGRATE remotehost remoteport "" 0 5000 COPY KEYS *

Также не будет работать.Но есть обходной путь: https://stackoverflow.com/a/42686861/78569

redis-cli --raw KEYS '*' |xargs redis-cli MIGRATE my.redis 6379 "" 0 5000 KEYS

(пожалуйста, поддержите этого парня, если вы его использовали)

4.Сценарии оболочки

Вот сценарий, который направляет KEYS вывод в MIGRATE и добавляет некоторые другие функции: https://gist.github.com/nicStuff/ee7feb8eed00174a46db42812545b403

5.Загрузка RDB

Вы можете загрузить дамп RDB с протоколом Redis, даже если у вас нет доступа к файлу на сервере:

redis-cli -h <host> -p <port> --rdb /path/to/local/copy/dump.rdb
...