Spec-Zone .ru
спецификации, руководства, описания, API

23.2.4.5. Запись Плагинов Демона

Плагин демона является простым типом плагина, используемого для кода, который должен быть выполнен сервером, но это не связывается с этим. Этот раздел описывает, как записать плагин сервера демона, используя плагин в качестве примера, найденный в plugin/daemon_example каталог исходных дистрибутивов MySQL. Тот каталог содержит daemon_example.cc исходный файл для плагина демона называют daemon_example это пишет строку биения равномерно в названный файл mysql-heartbeat.log в каталоге данных.

Чтобы записать плагин демона, включайте следующий заголовочный файл в сменный исходный файл. Другой MySQL или общие заголовочные файлы могли бы также быть необходимы.

#include <mysql/plugin.h>

plugin.h определяет MYSQL_DAEMON_PLUGIN тип плагина сервера и структуры данных должны были объявить плагин.

daemon_example.cc файл устанавливает дескриптор библиотеки следующим образом. Дескриптор библиотеки включает единственный общий дескриптор плагина сервера.

mysql_declare_plugin(daemon_example){  MYSQL_DAEMON_PLUGIN,  &daemon_example_plugin,  "daemon_example",  "Brian Aker",  "Daemon example, creates a heartbeat beat file in mysql-heartbeat.log",  PLUGIN_LICENSE_GPL,  daemon_example_plugin_init, /* Plugin Init */  daemon_example_plugin_deinit, /* Plugin Deinit */  0x0100 /* 1.0 */,  NULL,                       /* status variables                */  NULL,                       /* system variables                */  NULL,                       /* config options                  */  0,                          /* flags                           */}mysql_declare_plugin_end;

name элемент (daemon_example) указывает на имя, чтобы использовать для ссылок на плагин в операторах такой как INSTALL PLUGIN или UNINSTALL PLUGIN. Это - также имя, выведенное на экран SHOW PLUGINS или INFORMATION_SCHEMA.PLUGINS.

Второй элемент сменного дескриптора, daemon_example_plugin, точки к специфичному для типа дескриптору плагина демона. Эта структура состоит только из специфичного для типа номера версии API:

struct st_mysql_daemon daemon_example_plugin={ MYSQL_DAEMON_INTERFACE_VERSION  };

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

Чтобы скомпилировать и установить сменный объектный файл библиотеки, используйте инструкции в Разделе 23.2.4.3, "Компилируя и Устанавливая Сменные Библиотеки". Чтобы использовать файл библиотеки, это должно быть установлено в сменном каталоге (каталог, названный plugin_dir системная переменная). Для daemon_example плагин, это компилируется и устанавливается, когда Вы создаете MySQL из источника. Это также включается в двоичные дистрибутивы. Процесс сборки производит совместно используемую библиотеку объектов с именем libdaemon_example.so (суффикс мог бы отличаться в зависимости от Вашей платформы).

Чтобы использовать плагин, зарегистрируйте это в сервере. Например, чтобы зарегистрировать плагин во времени выполнения, используйте этот оператор (измените суффикс по мере необходимости):

mysql> INSTALL PLUGIN daemon_example SONAME
        'libdaemon_example.so';

Для дополнительной информации о сменной загрузке см. Раздел 5.1.8.1, "Устанавливая и Удаляя Плагины".

Чтобы проверить сменную установку, исследуйте INFORMATION_SCHEMA.PLUGINS таблица или использование SHOW PLUGINS оператор.

В то время как плагин загружается, он пишет строку биения равномерно в названный файл mysql-heartbeat.log в каталоге данных. Этот файл растет без предела, таким образом после того, как у Вас есть satistifed самостоятельно, что плагин работает правильно, разгрузите это:

mysql> UNINSTALL PLUGIN
        daemon_example;