10bet网址
MySQL 5.6リファレンスマニュアル
下载本手册
PDF(美国Ltr)- 26.8 mb
PDF (A4)- 26.8 mb


24.2.5プラグMySQLンのためのMySQLサビス

MySQLサバプラグンは,サのサビスにアクセスできます。サビスインタフェースは、プラグインが呼び出すことができるサーバー機能を公開します。これはプラグイン API を補完し、次の特徴があります。

  • サービスによって,プラグインは通常の関数呼び出しを使用して,サーバー内部のコードにアクセスできます。

  • サビスには移植性があり,複数のプラットフォムで動作します。

  • インタフェースにはバージョン管理メカニズムがあるため,サーバーによってサポートされるサービスバージョンを,プラグインバージョンに対してロード時にチェックできます。バージョン管理により,サーバーが提供するサービスのバージョン,およびプラグインが予期または必要とするサービスのバージョンの間の互換性の問題が防止されます。

現在のサビスには次のものが含まれており,ほかのサビスも実装できます。

  • my_plugin_log_service:プラグ。サバはエラログにメッセジを書き込みます。

  • my_snprintf:プラットフォム間で一貫性のある結果を生成する,文字列の書式設定サビス。

  • my_thd_scheduler:プラグプラグンがスレッドスケジュラを選択するためのサビス。

  • mysql_string:文字列操作のためのサビス。

  • thd_alloc:メモリ割り当てサビス。

  • thd_wait:プラグプラグンがスリプまたは停止することを報告するためのサビス。

プラグopenstackンサopenstackビスopenstackンタフェopenstackスとプラグopenstackンAPIの違いは次のとおりです。

  • プラグopenstackンAPIでは,サopenstackバopenstackからプラグopenstackンを使用できます。呼び出しを開始するのは,プラグ。これにより,サーバー機能の拡張,またはサーバーの処理に関する通知を受け取るための登録をプラグインで行うことができます。

  • プラグインサービスインタフェースでは,プラグインはサーバー内部のコードを呼び出すことができます。呼び出しを開始するのは,サンです。これにより,多くのプラグインがサーバーにすでに実装されている機能を使用できるようになり,プラグインに個別に機能を実装する必要がなくなります。

サバを変更して新しいサビスを追加する開発者は,プラグMySQLンのためのMySQLサビスを参照してください。

このセクションの残りの部分では,サービスとして使用可能なサーバー機能をプラグインで使用する方法について説明します。my_snprintfサビスを使用するデモンプラグ邮箱ンの例のソ邮箱スも参照してください。このプラグereplicationンは,MySQLソereplicationス配布の插件/ daemon_exampleディレクトリにあります。

存在するサビスおよびサビスが提供する関数を確認するには,MySQLソス配布の包括/ mysqlディレクトリ内を参照してください。関連するファ邮箱ルは次のとおりです。

  • plugin.hservices.hを邮箱ンクル邮箱ドします。

  • services.hは,使用可能なすべてのサ包括的なヘッダです。

  • サビス固有のヘッダには,service_my_snprintf.hまたはservice_thd_alloc.hのような名前が付いています。

各サービス固有ヘッダーには,対象となるサービスの完全な使用法を示すドキュメントを提供するコメントがあり,使用可能なサービス関数,それらの呼び出しシーケンス,および戻り値が含まれています。

プラグン内からサビスを使用するには,サビス関連の情報にアクセスするためのplugin.hヘッダ。

# include < mysql / plugin.h >

これによってセットアップのコストが増えるわけではありません。このファイルにはすべてのプラグインで必要となる定義および構造体が含まれているため,プラグインはいずれにしてもこのファイルをインクルードする必要があります。

サビスにアクセスするために,プラグビス関数を呼び出します。たとえば、出力のために文字列を書式設定してバッファーに入れるには、同じ名前のサービスによって提供されているmy_snprintf ()関数を呼び出します。

字符缓冲区(BUFFER_SIZE);my_snprintf(缓冲区,sizeof(缓冲),format_stringargument_to_format,……);

サバがエラログに書き込むエラを報告するには,最初にエラレベルを選択します。mysql / service_my_plugin_log.hはこれらのレベルを定義しています。

枚举plugin_log_level {MY_ERROR_LEVEL, MY_WARNING_LEVEL, MY_INFORMATION_LEVEL};

次に,my_plugin_log_message ()を呼び出します。

int my_plugin_log_message(MYSQL_PLUGIN *plugin, enum plugin_log_level level, const char *format,…);

例:

my_plugin_log_message(plugin_ptr, MY_ERROR_LEVEL, "无法初始化插件");

プラグンをビルドするときに,libmysqlservicesラ邮箱ブラリでリンクする必要があります。リンク時には-lmysqlservicesフラグを使用します。たとえばCMakeの場合,最上位レベルのCMakeLists.txtファ邮箱ルに次の内容を指定します。

MYSQLSERVICES_LIB mysqlservices路径"${MYSQL_SRCDIR}/libservices" NO_DEFAULT_PATH)

プラグ邮箱ンのソ邮箱スが格納されているディレクトリのCMakeLists.txtファ邮箱ルに次の内容を指定します。

#插件需要mysql服务库的错误日志记录your_plugin_library_name$ {MYSQLSERVICES_LIB})