Spec-Zone .ru
спецификации, руководства, описания, API
|
A daemon plugin is a simple type of plugin used for code that should be run by the server but that does not
communicate with it. This section describes how to write a daemon server plugin, using the example plugin found
in the plugin/daemon_example
directory of MySQL source distributions. That
directory contains the daemon_example.cc
source file for a daemon plugin named
daemon_example
that writes a heartbeat string at regular intervals to a file named
mysql-heartbeat.log
in the data directory.
To write a daemon plugin, include the following header file in the plugin source file. Other MySQL or general header files might also be needed.
#include <mysql/plugin.h>
plugin.h
defines the MYSQL_DAEMON_PLUGIN
server plugin
type and the data structures needed to declare the plugin.
The daemon_example.cc
file sets up the library descriptor as follows. The library
descriptor includes a single general server plugin descriptor.
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;
The name
member (daemon_example
) indicates the name to
use for references to the plugin in statements such as INSTALL PLUGIN
or UNINSTALL PLUGIN
. This is also the name displayed by SHOW PLUGINS
or INFORMATION_SCHEMA.PLUGINS
.
The second member of the plugin descriptor, daemon_example_plugin
, points to the
type-specific daemon plugin descriptor. This structure consists only of the type-specific API version number:
struct st_mysql_daemon daemon_example_plugin={ MYSQL_DAEMON_INTERFACE_VERSION };
The type-specific structure has no interface functions. There is no communication between the server and the plugin, except that the server calls the initialization and deinitialization functions from the general plugin descriptor to start and stop the plugin:
daemon_example_plugin_init()
opens the heartbeat file
and spawns a thread that wakes up periodically and writes the next message to the file.
daemon_example_plugin_deinit()
closes the file and
performs other cleanup.
To compile and install a plugin library object file, use the instructions in Section
23.2.4.3, "Compiling and Installing Plugin Libraries". To use the library file, it must be installed in the
plugin directory (the directory named by the plugin_dir
system variable). For the daemon_example
plugin, it is compiled and installed when you build MySQL from
source. It is also included in binary distributions. The build process produces a shared object library with a
name of libdaemon_example.so
(the suffix might differ depending on your platform).
To use the plugin, register it with the server. For example, to register the plugin at runtime, use this statement (change the suffix as necessary):
mysql> INSTALL PLUGIN daemon_example SONAME
'libdaemon_example.so';
For additional information about plugin loading, see Section 5.1.8.1, "Installing and Uninstalling Plugins".
To verify plugin installation, examine the INFORMATION_SCHEMA.PLUGINS
table or use the SHOW PLUGINS
statement.
While the plugin is loaded, it writes a heartbeat string at regular intervals to a file named mysql-heartbeat.log
in the data directory. This file grows without limit, so after
you have satistifed yourself that the plugin operates correctly, unload it:
mysql> UNINSTALL PLUGIN
daemon_example;