Spec-Zone .ru
спецификации, руководства, описания, API
|
Плагин демона является простым типом плагина, используемого для кода, который должен быть выполнен сервером, но
это не связывается с этим. Этот раздел описывает, как записать плагин сервера демона, используя плагин в
качестве примера, найденный в 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 от общего сменного дескриптора, чтобы запустить и остановить плагин:
daemon_example_plugin_init()
открывает файл биения и
порождает поток, который периодически просыпается и пишет следующее сообщение в файл.
daemon_example_plugin_deinit()
закрывает файл и
выполняет другую уборку.
Чтобы скомпилировать и установить сменный объектный файл библиотеки, используйте инструкции в Разделе
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;