Как переносить пользователей между шардами
Назначение документа
В документе представлена информация по перемещению пользователей между шардами.
Перенос между шардами требуется, если нужно запретить регистрацию на одном шарде и перенести одного или несколько пользователей на другой.
Предварительные требования
Для успешного переноса пользователей потребуются:
- Навыки работы с SQL-запросами.
- Доступ по SSH к виртуальным машинам в кластере.
- Доступ к веб-интерфейсу установщика.
Как перенести пользователей между шардами
Перед переносом пользователей проверьте, что шарды обслуживаются одноименными обработчиками (stm). Проверить можно в веб-интерфейсе установщика в разделе Настройки -> Хранилища -> Mescalito. Например, если нужно переместить пользователя с первого шарда на второй, на обоих шардах должен быть одинаковый обработчик (stm1-stm1, stm2-stm2 и т.п.). Если одинаковых обработчиков у шардов нет, то создайте еще один контейнер stm в списке ролей и добавьте его во все шарды. Таким образом, у всех шардов будет один общий обработчик.
Чтобы добавить новый контейнер stm:
- В веб-интерфейсе установщика, в самом низу страницы со списком ролей, нажмите на кнопку Добавить -> Контейнер.
- Найдите контейнер stm в списке.
- В общей строке состояния запустите автоустановку и дождитесь ее окончания.
Теперь можно перенести пользователя на другой шард:
- Подключитесь по SSH к любой ВМ или серверу с ролью БД.
-
В консоли на ВМ c ролью БД перейдите в контейнер umi*. Номер в названии контейнера зависит от того, к какой ВМ вы подключились.
-
Выполнитe команду:
-
Найдите ID пользователя в таблице Users:
-
Скопируйте ID нужного пользователя.
-
Перейдите на любой сервер с ролью Хранилище.
-
Перейдите в контейнер
stm<X>
, где <Х> — номер stm. Номер контейнера зависит от того, к какой ВМ вы подключились. -
Проверьте, на каком шарде находится пользователь:
-
В разделе Настройки -> Хранилища -> Mescalito проверьте на какой ВМ с ролью Хранилище находится общий для всех шардов контейнер stm.
-
Подключитесь по SSH к этой ВМ.
-
Перейдите в контейнер stm*, который является общим для текущего и будущего шардов, обрабатывающих данные выбранного пользователя (stm1, stm2, stm3 и т.д.). Общий контейнер stm был добавлен перед шагом 1.
-
Выполните команду для переноса пользователя:
-
Проверьте, перенесен ли пользователь на другой шард:
Если в ответе команды шард был изменен, перенос прошел успешно.