我是靠谱客的博主 瘦瘦牛排,最近开发中收集的这篇文章主要介绍如何加入mysql插件_如何开发一个自定义的MySQL插件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MySQL自带了很多插件,比如半同步插件、审计插件、密码验证插件等等,甚至MySQL存储引擎也是以插件方式实现的。MySQL开放的插件接口,为开发者开发自定义插件提供了便利。本文将介绍如何快速开发一个自定义的MySQL插件。

一、开发环境准备

下载MySQL源码,本文使用的源码是 Percona Server for MySQL 5.7.19。

安装C/C++开发环境、依赖包等。

编译MySQL源码,保证在开发自定义插件前,MySQL源码能够被正常编译。

二、自定义插件my_plugin

MySQL源码中包含了插件开发的例子,在源码目录plugin/daemon_example,该例子实现的是每隔5秒向数据目录的mysql-heartbeat.log文件中写入心跳时间戳,如下:

Starting up at 190809 2:30:26

Heartbeat at 190809 2:30:31

Heartbeat at 190809 2:30:36

Heartbeat at 190809 2:30:41

Heartbeat at 190809 2:30:36

Heartbeat at 190809 2:30:51

Shutting down at 190809 2:30:53

以daemon_example为基础,开发自定义插件。拷贝daemon_example目录改名为my_plugin,依次修改my_plugin目录下的文件,把daemon_example修改为my_plugin。

my_plugin/CMakeLists.txt

my_plugin/my_plugin.cc(daemon_example.cc修改为my_plugin.cc)

my_plugin/my_plugin.ini(daemon_example.ini修改为my_plugin.ini)

为了与daemon_example有点区别,我们修改my_plugin.cc文件,主要修改点如下:

1. mysql_declare_plugin,修改插件名称,作者。

2. mysql-heartbeat.log 日志名称修改为 my_plugin.log。

3. 心跳间隔时间由5秒调整为60秒。

三、编译自定义插件

按照步骤一编译MySQL源码的方式,再次编译一次。编译成功的话,会在plugin/my_plugin生成插件my_plugin.so

四、安装及卸载自定义插件

使用编译好的MySQL二进制程序初始化数据库,启动数据库,连接到数据库,执行安装和卸载插件的命令,如下:

安装:INSTALL PLUGIN my_plugin SONAME 'my_plugin.so';

卸载:UNINSTALL PLUGIN my_plugin;

mysql.plugin 表记录了已经安装的插件,通过执行SQL:select * from mysql.plugin; 来获取已安装的插件。

mysql.plugin系统表记录的插件必须是通过install plugin语句来安装的,通过 --plugin-load方式安装的插件,不会记录到mysql.plugin表中。

在数据目录,可以查看心跳日志文件my_plugin.log是否存在,里面的心跳日志,是否每隔60秒打印一次,如下:

Starting up at 190809 4:07:52

Heartbeat at 190809 4:08:52

Heartbeat at 190809 4:09:52

Heartbeat at 190809 4:10:52

Heartbeat at 190809 4:11:52

Heartbeat at 190809 4:12:52

Shutting down at 190809 4:12:55

五、扩展插件功能

my_plugin插件虽然只是一个没有任何实际功能的MySQL插件,但是可以在此基础上,添加更多的实用功能,比如记录每个SQL的执行次数,最低执行时间,最高执行时间等等。当然这些需要对MySQL源码进一步熟悉的基础上,才能进行更强大功能的开发。

最后

以上就是瘦瘦牛排为你收集整理的如何加入mysql插件_如何开发一个自定义的MySQL插件的全部内容,希望文章能够帮你解决如何加入mysql插件_如何开发一个自定义的MySQL插件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部