MySQL插件(一)介绍
插件
- 简介
- 插件类型
- 加载和卸载插件
简介
在第一节中提到,MySQL 是支持动态可插拔的储存引擎体系架构。
而储存引擎其实也是一种插件类型,所以在继续储存引擎的后续介绍之前,有必要先来了解一下MySQL的插件。
可以从INFORMATION_SCHEMA.PLUGINS
或者 SHOW PLUGINS
可以获取到当前 MySQL 内部所有插件的详情。
mysql> mysql> select * from information_schema.plugins;
+----------------------------+----------------+---------------+--------------------+---------------------+----------------+------------------------+--------------------------------------------+---------------------------------------------------------------------------+----------------+-------------+
| PLUGIN_NAME | PLUGIN_VERSION | PLUGIN_STATUS | PLUGIN_TYPE | PLUGIN_TYPE_VERSION | PLUGIN_LIBRARY | PLUGIN_LIBRARY_VERSION | PLUGIN_AUTHOR | PLUGIN_DESCRIPTION | PLUGIN_LICENSE | LOAD_OPTION |
+----------------------------+----------------+---------------+--------------------+---------------------+----------------+------------------------+--------------------------------------------+---------------------------------------------------------------------------+----------------+-------------+
| binlog | 1.0 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | MySQL AB | This is a pseudo storage engine to represent the binlog in a transaction | GPL | FORCE |
| mysql_native_password | 1.1 | ACTIVE | AUTHENTICATION | 1.1 | NULL | NULL | R.J.Silk, Sergei Golubchik | Native MySQL authentication | GPL | FORCE |
| sha256_password | 1.1 | ACTIVE | AUTHENTICATION | 1.1 | NULL | NULL | Oracle | SHA256 password authentication | GPL | FORCE |
| CSV | 1.0 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | Brian Aker, MySQL AB | CSV storage engine | GPL | FORCE |
| MEMORY | 1.0 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | MySQL AB | Hash based, stored in memory, useful for temporary tables | GPL | FORCE |
| InnoDB | 5.7 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | Oracle Corporation | Supports transactions, row-level locking, and foreign keys | GPL | FORCE |
| INNODB_TRX | 5.7 | ACTIVE | INFORMATION SCHEMA | 50725.0 | NULL | NULL | Oracle Corporation | InnoDB transactions | GPL | FORCE |
| INNODB_LOCKS | 5.7 | ACTIVE | INFORMATION SCHEMA | 50725.0 | NULL | NULL | Oracle Corporation | InnoDB conflicting locks | GPL | FORCE |
| INNODB_LOCK_WAITS | 5.7 | ACTIVE | INFORMATION SCHEMA | 50725.0 | NULL | NULL | Oracle Corporation | InnoDB which lock is blocking which | GPL | FORCE |......
| INNODB_SYS_VIRTUAL | 5.7 | ACTIVE | INFORMATION SCHEMA | 50725.0 | NULL | NULL | Oracle Corporation | InnoDB SYS_VIRTUAL | GPL | FORCE |
| MyISAM | 1.0 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | MySQL AB | MyISAM storage engine | GPL | FORCE |
| MRG_MYISAM | 1.0 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | MySQL AB | Collection of identical MyISAM tables | GPL | FORCE |
| PERFORMANCE_SCHEMA | 0.1 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | Marc Alff, Oracle | Performance Schema | GPL | FORCE |
| ARCHIVE | 3.0 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | Brian Aker, MySQL AB | Archive storage engine | GPL | ON |
| BLACKHOLE | 1.0 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | MySQL AB | /dev/null storage engine (anything you write to it disappears) | GPL | ON |
| FEDERATED | 1.0 | DISABLED | STORAGE ENGINE | 50725.0 | NULL | NULL | Patrick Galbraith and Brian Aker, MySQL AB | Federated MySQL storage engine | GPL | OFF |
| partition | 1.0 | ACTIVE | STORAGE ENGINE | 50725.0 | NULL | NULL | Mikael Ronstrom, MySQL AB | Partition Storage Engine Helper | GPL | ON |
| ngram | 0.1 | ACTIVE | FTPARSER | 1.1 | NULL | NULL | Oracle Corp | Ngram Full-Text Parser | GPL | ON |
+----------------------------+----------------+---------------+--------------------+---------------------+----------------+------------------------+--------------------------------------------+---------------------------------------------------------------------------+----------------+-------------+
插件类型
在 MySQL 5.7.25 中,主要有以下几种类型:
- 储存引擎(storage engines)
- 全文索引解析插件(Full-text parsers)
- 守护插件(Daemons)
- INFORMATION_SCHEMA 插件(INFORMATION_SCHEMA tables)
- 日志同步插件(Semisynchronous replication)
- 认证插件(Authentication)
- 密码验证插件(Password validation and strength checking)
- 密钥环插件(Keyring)
源码中 include/mysql/plugin.h
有各种插件类型的宏定义:
/*The allowable types of plugins
*/
#define MYSQL_UDF_PLUGIN 0 /* User-defined function */
#define MYSQL_STORAGE_ENGINE_PLUGIN 1 /* Storage Engine */
#define MYSQL_FTPARSER_PLUGIN 2 /* Full-text parser plugin */
#define MYSQL_DAEMON_PLUGIN 3 /* The daemon/raw plugin type */
#define MYSQL_INFORMATION_SCHEMA_PLUGIN 4 /* The I_S plugin type */
#define MYSQL_AUDIT_PLUGIN 5 /* The Audit plugin type */
#define MYSQL_REPLICATION_PLUGIN 6 /* The replication plugin type */
#define MYSQL_AUTHENTICATION_PLUGIN 7 /* The authentication plugin type */
#define MYSQL_VALIDATE_PASSWORD_PLUGIN 8 /* validate password plugin type */
#define MYSQL_GROUP_REPLICATION_PLUGIN 9 /* The Group Replication plugin */
#define MYSQL_KEYRING_PLUGIN 10 /* The Keyring plugin type */
#define MYSQL_MAX_PLUGIN_TYPE_NUM 11 /* The number of plugin types */
如果需要实现自定义的储存引擎,需要自定义一个类型为#define MYSQL_STORAGE_ENGINE_PLUGIN 1
的插件类型。
加载和卸载插件
在源码编译时,MySQL 插件可以直接以 buildin 的方式作为静态插件内嵌到 mysqld
中,从而在 mysqld
服务起来之后,自动加载插件。
此外,在编译时,插件也可以编译为动态插件,从而在在运行时可以加载和卸载插件,做到可插拔。
动态插件可以在服务器启动时通过指定 option 加载,也可以在运行时加载和卸载插件。
- 启动时加载
指定plugin_load
选项并指定特定的插件名称和对应动态插件库。support-files/mysql.server restart --plugin_load=example=ha_example.so
也可以写入到 my.cnf 配置项中
[mysqld] plugin-load=example=ha_example.so
Tips:
一般源码编译的会有ha_example.so动态查看库,这是一个储存引擎实例插件,位于plugin_dir
路径中,plugin_dir
一般位于安装目录下的lib/plugin
中,也可以通过查询得到:mysql> select @@plugin_dir; +-------------------------------------+ | @@plugin_dir |+-------------------------------------+| /opt/mysql-5.7.25/mysql/lib/plugin/ |+-------------------------------------+1 row in set (0.01 sec)
可以去路径下查看都有哪些动态插件
root@ivan:/opt/mysql-5.7.25/mysql/lib/plugin# ls adt_null.so keyring_file.so libtest_session_in_thd.so libtest_sql_processlist.so locking_service.so rewrite_example.so auth.so keyring_udf.so libtest_sql_2_sessions.so libtest_sql_replication.so mypluglib.so rewriter.so auth_socket.so libdaemon_example.so libtest_sql_all_col_types.so libtest_sql_shutdown.so mysql_no_login.so semisync_master.so auth_test_plugin.so libtest_framework.so libtest_sql_cmds_1.so libtest_sql_sqlmode.so mysqlx.so semisync_slave.so connection_control.so libtest_services.so libtest_sql_commit.so libtest_sql_stored_procedures_functions.so qa_auth_client.so test_security_context.so daemon_example.ini libtest_services_threaded.so libtest_sql_complex.so libtest_sql_views_triggers.so qa_auth_interface.so test_udf_services.so group_replication.so libtest_session_detach.so libtest_sql_errors.so libtest_x_sessions_deinit.so qa_auth_server.so validate_password.so ha_example.so libtest_session_info.so libtest_sql_lock.so libtest_x_sessions_init.so replication_observers_example_plugin.so version_token.so root@ivan:/opt/mysql-5.7.25/mysql/lib/plugin#
- 运行时动态加载
mysql> install plugin example soname 'ha_example.so';Query OK, 0 rows affected (0.01 sec)mysql> show plugins;+----------------------------+----------+--------------------+---------------+---------+| Name | Status | Type | Library | License |+----------------------------+----------+--------------------+---------------+---------+| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL || InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |......| partition | ACTIVE | STORAGE ENGINE | NULL | GPL || ngram | ACTIVE | FTPARSER | NULL | GPL || EXAMPLE | ACTIVE | STORAGE ENGINE | ha_example.so | GPL |+----------------------------+----------+--------------------+---------------+---------+
- 卸载插件
mysql> uninstall plugin example;Query OK, 0 rows affected (0.01 sec)
对 MySQL 自定义引擎工作感兴趣的
v 信:yutellite
MySQL插件(一)介绍相关推荐
- MySQL第6天:MySQL的架构介绍之逻辑架构
MySQL的架构介绍之逻辑架构 #编写时间:2017.3.7 #编写地点:广州 MySQL的优势主要体现在存储引擎的架构上,它是插件式的存储引擎架构,将查询处理和其它的系统任务以及数据的存储提取分离, ...
- MySQL Group Replication 介绍
2016-12-12,一个重要的日子,mysql5.7.17 GA版发布,正式推出Group Replication(组复制) 插件,通过这个插件增强了MySQL原有的高可用方案(原有的Replica ...
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
深入理解MySQL的数据库引擎的类型 作者: 字体:[增加 减小] 类型:转载 本篇文章是对MySQL的数据库引擎的类型进行了详细的分析介绍,需要的朋友参考下 你能用的数据库引擎取决于mysql在 ...
- arm qt mysql插件_Ubuntu下编译ARM平台Qt的MySQL插件
最近需要将一个程序移植到arm平台上,程序调用了MySQL数据库,所以就牵扯到将MySQL数据库移植到ARM平台上面,所以在网上大量查阅资料.在baidu文库发现了一篇文档,是wlzxlc上传的文档名 ...
- MySQL information_schema 系统库介绍
前言: 当我们安装好 MySQL 数据库后,会发现数据库实例自带有 information_schema 系统库,你是否有去关注过这个系统库呢?是否有查询过此库中的表数据呢?又是否清楚此库存在的具体作 ...
- 第 1 章 MySQL 的架构介绍
第 1 章 MySQL 的架构介绍 1.MySQL 简介 什么是 MySQL? MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数 ...
- 如何添加MySQL插件_如何开发一个自定义的MySQL插件
MySQL自带了很多插件,比如半同步插件.审计插件.密码验证插件等等,甚至MySQL存储引擎也是以插件方式实现的.MySQL开放的插件接口,为开发者开发自定义插件提供了便利.本文将介绍如何快速开发一个 ...
- 尚硅谷MySQL高级学习笔记 -- 1.MySQL 的架构介绍
1.MySQL 简介 什么是 MySQL? MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中 ...
- Mysql安装与介绍
MySQL安装与介绍 一.MySQL概述 1.关系型数据库与非关系型数据库 RDBMS(relational database management system),既关系型数据库管理系统. 简单来说 ...
最新文章
- 大学python用什么教材-数据结构 Python语言描述 大学教材
- 【密码学】一万字带您走进密码学的世界(下)
- MySQL-数据库增删改查
- 有关Accordion组件的研究——Silverlight学习笔记[27]
- [BZOJ] 1025 [SCOI2009]游戏
- 合数分解质数c语言算法,合数分解成质数之和问题探究
- 基于android的视频播放器,基于Android的视频播放器的设计与实现-.doc
- 《哪吒之魔童降世》电影密钥延期至9月26日,将冲击中国票房总榜前三
- 动态合并Repeater控件数据列
- 图像增强处理之:同态滤波与Retinex算法(三)Retinex邻域算法:SSR,MSR,MSRCR
- 6. Python基础:输入输出语句介绍
- 凯立德2015夏季3621J0P4G卡版分区地图
- JanusGraph配置
- 163邮箱怎么申请?手机号怎么申请注册邮箱?
- 大数据司法时代的立言、立功与立德
- 【JMedia】诺贝尔奖得主:东亚教育浪费了太多生命
- 给大家推荐几个程序员必备网站
- 震惊!你可能下了个假的抢红包神器
- 由夏时令引起的java世界时间不一致问题
- 《JAVA高并发编程详解》-七种单例模式
热门文章
- 【编程笔试】美团2021校招笔试-通用编程题第3场(附思路及C++代码)
- 分享几个Qt界面绘图时使用到的坐标计算算法
- Postgresql vacuum freeze相关参数
- 金城江区~宜州市 网上地图对照
- minigui 3.2.0:对mgncs剪裁遇到的问题error: The pkg-config script could not be found or is too old.
- 2021秋招-算法-BFS-DFS
- 编译OSG及OsgOcean
- 最小二乘法及其几何意义
- 第3次作业:团队介绍
- 幼儿家长老师都实用的100个不同阶段的亲子游戏(二)