デーモンプラグインは、サーバーによって実行されるがサーバーと通信しないコードに使用される単純なタイプのプラグインです。このセクションでは、MySQL ソース配布の plugin/daemon_example
ディレクトリにあるプラグインの例を使用して、デーモンサーバープラグインを作成する方法について説明します。このディレクトリには、daemon_example
という名前のデーモンプラグイン用の daemon_example.cc
というソースファイルが格納されており、このデーモンプラグインは、データディレクトリ内の 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
によって表示される名前でもあります。
プラグインディスクリプタの 2 番目のメンバー daemon_example_plugin
は、タイプ固有のデーモンプラグインディスクリプタを指しています。この構造体は、タイプ固有の API バージョン番号のみで構成されています。
struct st_mysql_daemon daemon_example_plugin=
{ MYSQL_DAEMON_INTERFACE_VERSION };
タイプ固有の構造体にはインタフェース機能がありません。サーバーとプラグインの間の通信はありませんが、サーバーは一般プラグインディスクリプタから初期化関数および初期化解除関数を呼び出してプラグインを開始および停止します。
daemon_example_plugin_init()
はハートビートファイルを開き、定期的に動作するスレッドを生成し、次のメッセージをファイルに書き込みます。daemon_example_plugin_deinit()
はファイルを閉じて、ほかのクリーンアップ処理を実行します。
プラグインライブラリのオブジェクトファイルをコンパイルおよびインストールするには、セクション24.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
という名前のファイルにハートビート文字列を定期的な間隔で書き込みます。このファイルは無制限に大きくなるため、プラグインが正しく動作することを確認したら、ファイルをアンロードしてください。
mysql> UNINSTALL PLUGIN daemon_example;