Перейти к содержимому
Последнее обновление

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

Примечания по использованию​

  1. После выполнения этой команды можно использовать оператор SHOW BACKENDS, чтобы просмотреть состояние вывода из эксплуатации (значение столбца SystemDecommissioned равно true) и ход операции (значение столбца TabletNum будет постепенно уменьшаться до 0).
  2. Обычно после того, как значение столбца TabletNum уменьшится до 0, этот узел BE удаляется. Если вы не хотите, чтобы Doris автоматически удалял BE, можно установить для параметра drop_backend_after_decommission на FE Master значение false.
  3. Если на текущем BE хранится относительно большой объём данных, операция DECOMMISSION может занять несколько часов или даже дней.
  4. Если операция 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.

Примеры​

  1. Безопасно вывести два узла из состава кластера по значениям Host и HeartbeatPort узлов BE.

    ALTER SYSTEM DECOMMISSION BACKEND "192.168.0.1:9050", "192.168.0.2:9050";
  2. Безопасно вывести узел из состава кластера по ID узла BE.

    ALTER SYSTEM DECOMMISSION BACKEND "10002";