Spec-Zone.ru › MySQL 8.4

15.7.4.3 Заявление INSTALL COMPONENT

INSTALL COMPONENT component_name  [, component_name ...
     [SET variable = expr [, variable = expr] ...]

  variable: {
    {GLOBAL | @@GLOBAL.} [component_prefix.]system_var_name
  | {PERSIST | @@PERSIST.} [component_prefix.]system_var_name
}

Это утверждение устанавливает один или несколько компонентов, которые становятся активными немедленно. Компонент предоставляет услуги, доступные серверу и другим компонентам; см. Раздел 7.5, «Компоненты MySQL». INSTALL COMPONENT требует привилегии INSERT для системной таблицы mysql.component, так как оно добавляет строку в эту таблицу для регистрации компонента.

Пример:

INSTALL COMPONENT 'file://component1', 'file://component2';

Компонент называется с помощью URN, начинающегося с file:// и указывающего базовое имя файла библиотеки, реализующего компонент, расположенного в каталоге, указанном системной переменной plugin_dir. Имена компонентов не включают никаких зависящих от платформы суффиксов имен файлов, таких как .so или .dll. (Эти сведения об именовании могут быть изменены, так как интерпретация имени компонента выполняется самим сервисом, а инфраструктура компонентов позволяет заменить стандартную реализацию сервиса альтернативными реализациями).

INSTALL COMPONENT разрешает установку значений системных переменных компонентов при установке одного или нескольких компонентов. Клауза SET позволяет точно указывать значения переменных, когда они нужны, без неудобств или ограничений, связанных с другими формами присваивания. В частности, вы также можете установить переменные компонентов с помощью этих альтернатив:

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

  • Динамически во время работы сервера с помощью оператора SET, который позволяет изменять работу сервера без остановки и перезапуска. Не допускается установка значения для read-only переменной.

Необязательная клауза SET применяет значение или значения только к компоненту, указанному в операторе INSTALL COMPONENT, а не ко всем последующим установкам этого компонента. SET GLOBAL|PERSIST работает для всех типов переменных, включая read-only переменные, без необходимости перезапуска сервера. Системная переменная компонента, установленная с помощью INSTALL COMPONENT, имеет приоритет над любым конфликтующим значением, полученным из командной строки или файла опций.

Пример:

INSTALL COMPONENT 'file://component1', 'file://component2'
    SET GLOBAL component1.var1 = 12 + 3, PERSIST component2.var2 = 'strings';

Опускание PERSIST или GLOBAL эквивалентно указанию GLOBAL.

Указание PERSIST для любой переменной в SET безмолвно выполняет SET PERSIST_ONLY сразу после того, как INSTALL COMPONENT загрузит компоненты, но перед обновлением таблицы mysql.component. Если SET PERSIST_ONLY завершится ошибкой, сервер разгрузит все ранее загруженные новые компоненты, ничего не сохранив в mysql.component.

Клауза SET принимает только допустимые имена переменных устанавливаемого компонента и выдает сообщение об ошибке для всех недопустимых имён. Подзапросы, хранимые функции и агрегатные функции не допускаются в качестве части выражения значения. Если вы устанавливаете один компонент, нет необходимости добавлять префикс имени переменной именем компонента.

Примечание

Хотя указание значения переменной с помощью клаузы SET похоже на указание в командной строке — оно становится доступным сразу при регистрации переменной — есть существенное различие в том, как клауза SET обрабатывает недопустимые числовые значения для логических переменных. Например, если вы установите логическую переменную в 11 (component1.boolvar = 11), вы увидите следующее поведение:

  • Клауза SET возвращает true

  • Командная строка возвращает false (11 ни ON, ни 1)

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

Сервис загрузчика обрабатывает загрузку компонентов, включая добавление установленных компонентов в системную таблицу mysql.component, которая служит реестром. При последующих перезапусках сервера любой компонент, перечисленный в mysql.component, загружается службой загрузчика во время начальной последовательности. Это происходит даже если сервер запускается с опцией --skip-grant-tables.

Если компонент зависит от служб, отсутствующих в реестре, и вы пытаетесь установить компонент без одновременной установки компонента или компонентов, предоставляющих службы, от которых он зависит, возникает ошибка:

ERROR 3527 (HY000): Cannot satisfy dependency for service 'component_a'
required by component 'component_b'.

Чтобы избежать этой проблемы, установите все компоненты в одном операторе или установите зависимый компонент после установки любого компонента, от которого он зависит.

Примечание

Для компонентов хранилища ключей не используйте INSTALL COMPONENT. Вместо этого настройте загрузку компонентов хранилища ключей с помощью файла манифеста. См. Раздел 8.4.4.2, «Установка компонентов хранилища ключей».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/install-component.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API