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

4.4.1 插件编写概述

这些条件适用于插件编写

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

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

  • 编译后的插件在不同服务器版本之间不兼容。对于针对 MySQL 8.4.X 编译的插件,不能保证它在不重新编译为 MySQL 8.4.Y 的情况下,就可以在 MySQL 8.4.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. 测试插件以验证其是否正常工作。