Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


24.2.4.5 デーモンプラグインの作成

デーモンプラグインは、サーバーによって実行されるがサーバーと通信しないコードに使用される単純なタイプのプラグインです。このセクションでは、MySQL ソース配布の plugin/daemon_example ディレクトリにあるプラグインの例を使用して、デーモンサーバープラグインを作成する方法について説明します。このディレクトリには、daemon_example という名前のデーモンプラグイン用の daemon_example.cc というソースファイルが格納されており、このデーモンプラグインは、データディレクトリ内の mysql-heartbeat.log という名前のファイルにハートビート文字列を定期的な間隔で書き込みます。

デーモンプラグインを作成するには、プラグインのソースファイルに次のヘッダーファイルをインクルードします。プラグインの機能および要件によっては、ほかの MySQL のヘッダーファイルまたは一般的なヘッダーファイルが必要になることもあります。

#include <mysql/plugin.h>

plugin.hMYSQL_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 PLUGINUNINSTALL 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;