Мы широко используем redis-cluster в нашей производственной среде. В настоящее время у нас есть кластер из 30 узлов (15 мастеров, 15 подчиненных). Мы пытаемся увеличить кластер, для этого мы создали новые серверы и присоединили их к кластеру. пока все хорошо.
Далее - пытаемся перекроить слоты под новых мастеров. мы написали сценарий, который делает это, используя команду redis-trib
reshard
.
Однако миграция не выполняется на полпути (но не очень далеко от начала) с этой ошибкой:
[ERR] Calling MIGRATE: ERR Target instance replied with error: BUSYKEY Target key name already exists.
Это происходит спорадически, иногда ему удается переместить некоторые слоты, прежде чем произойдет сбой, иногда сбой в первом слоте. Каждый такой сбой требует ручного исправления, что очень затрудняет выполнение операции reshard.
Мы не нашли ни конкретных примеров этого, ни идей о том, как предотвратить это, кроме миграции из-за простоя. чего мы пытаемся избежать.
Версии:
redis server 4.0.2
redis trib 3.3.3 (понижен с 4.0.2 после этой проблемы: redis cluster reshard [ERR] Calling MIGRATE: ERR Syntax error)
Нашим следующим шагом будет обновление до последней версии Redis (4.0.11), хотя мы не нашли никаких указаний в примечаниях к выпуску этой проблемы.
Надеетесь услышать, что мы делаем что-то не так и как это исправить, или redis-cluster не создан для живого ресардинга?
Спасибо