Последнее обновление
DECOMMISSION BACKEND
Описание
Этот оператор позволяет безопасно вывести узел BE из состава кластера. Операция выполняется асинхронно.
Синтаксис
ALTER SYSTEM DECOMMISSION BACKEND "<be_identifier>" [, "<be_identifier>" ... ]
Где:
be_identifier
: "<be_host>:<be_heartbeat_port>"
| "<backend_id>"
Обязательные параметры
1. <be_host>
Имя хоста или IP-адрес узла BE.
2. <heartbeat_port>
Порт heartbeat узла BE. По умолчанию используется 9050.
3. <backend_id>
ID узла BE.
подсказка
<be_host>, <be_heartbeat_port> и <backend_id> можно получить, выполнив запрос с помощью оператора SHOW BACKENDS.
Требования к правам доступа
Пользователь, выполняющий этот SQL-оператор, должен иметь как минимум следующие права:
| Привилегия | Объект | Примечания |
|---|---|---|
| NODE_PRIV |
Примечания по использованию
- После выполнения этой команды можно использовать оператор SHOW BACKENDS, чтобы просмотреть состояние вывода из эксплуатации (значение столбца
SystemDecommissionedравноtrue) и ход операции (значение столбцаTabletNumбудет постепенно уменьшаться до 0). - Обычно после того, как значение столбца
TabletNumуменьшится до 0, этот узел BE удаляется. Если вы не хотите, чтобы Doris автоматически удалял BE, можно установить для параметраdrop_backend_after_decommissionна FE Master значение false. - Если на текущем BE хранится относительно большой объём данных, операция DECOMMISSION может занять несколько часов или даже дней.
- Если операция DECOMMISSION перестала продвигаться, а именно значение столбца
TabletNumв результате выполнения оператора SHOW BACKENDS остаётся неизменным, это может быть вызвано следующими причинами:- Нет другого подходящего BE для переноса объектов tablet с текущего BE. Например, если в кластере из 3 узлов есть таблица с 3 репликами и один из узлов нужно вывести из эксплуатации, этот узел не сможет найти другие узлы BE для переноса данных (на двух остальных BE уже есть по одной реплике).
- Объекты tablet на текущем BE всё ещё находятся в корзине. Можно очистить корзину, а затем дождаться завершения вывода из эксплуатации.
- Размер tablet на текущем BE слишком велик, из-за чего перенос одного tablet всякий раз завершается по тайм-ауту и перенести его не удаётся. Можно увеличить значение параметра
max_clone_task_timeout_secна FE Master (по умолчанию оно составляет 7200 секунд). - На tablet текущего BE есть незавершённые транзакции. Можно дождаться завершения транзакций или прервать их вручную.
- В остальных случаях можно найти в журналах FE Master строки по ключевой фразе
replicas to decommission, чтобы определить проблемный tablet, с помощью оператора SHOW TABLET найти таблицу, которой он принадлежит, затем создать новую таблицу, перенести данные из старой таблицы в новую и, наконец, удалить старую таблицу с помощью оператора DROP TABLE FORCE.
Примеры
-
Безопасно вывести два узла из состава кластера по значениям Host и HeartbeatPort узлов BE.
ALTER SYSTEM DECOMMISSION BACKEND "192.168.0.1:9050", "192.168.0.2:9050"; -
Безопасно вывести узел из состава кластера по ID узла BE.
ALTER SYSTEM DECOMMISSION BACKEND "10002";