扩展 MySQL 9.0  /  ...  /  插件编写概述

4.4.1 插件编写概述

以下条件适用于插件编写

  • 插件使用的 MySQL 头文件包含 C++ 代码,因此插件必须作为 C++ 代码编译。

  • 您必须使用整个服务器源代码来编译插件,而不仅仅是库和头文件。

  • 编译后的插件不兼容不同服务器版本。对于针对 MySQL 9.0.X 编译的插件,不能保证它在 MySQL 9.0.Y 服务器上正常工作,除非为 MySQL 9.0.Y 重新编译。

  • 插件是动态加载和卸载的,因此您的操作系统必须支持动态加载,并且您必须以动态方式(而非静态方式)编译调用应用程序。对于服务器插件,这意味着 mysqld 必须以动态方式链接。

以下步骤概述了创建插件库所需的操作。接下来的部分将详细介绍如何设置插件数据结构和编写特定类型的插件。

  1. 在插件源文件中,包含插件库所需的头文件。plugin.h 文件是必需的,库可能还需要其他文件。例如

    #include <stdlib.h>
    #include <ctype.h>
    #include <mysql/plugin.h>
  2. 设置插件库文件的描述符信息。对于服务器插件,编写库描述符,其中必须包含文件中每个服务器插件的通用插件描述符。有关更多信息,请参见 第 4.4.2.1 节,“服务器插件库和插件描述符”。此外,为库中的每个服务器插件设置类型特定的描述符。每个插件的通用描述符都指向其类型特定的描述符。

    对于客户端插件,编写客户端描述符。有关更多信息,请参见 第 4.4.2.3 节,“客户端插件描述符”

  3. 为每个插件编写插件接口函数。例如,每个插件的通用插件描述符都指向服务器在加载和卸载插件时应调用的初始化和反初始化函数。插件的类型特定描述符也可能指向接口函数。

  4. 对于服务器插件,设置状态和系统变量(如果有)。

  5. 将插件库编译为共享库,并将其安装到插件目录中。有关更多信息,请参见 第 4.4.3 节,“编译和安装插件库”

  6. 对于服务器插件,向服务器注册插件。有关更多信息,请参见 安装和卸载插件

  7. 测试插件,以验证其是否正常工作。