MySQL的plugin
mysql通过plugin可以扩展更多的功能.plugin相当于一种插件,用户可以根据自己的需要求开发各种
各样的plugin来支持自定义的功能,比如存储引擎,半同步复制,分区等等各种各样的功能.
mysql服务器的plugin可以分为两类,一种是内置的plugin,一种是外部的plugin.内部的plugin主要是和
mysql服务器一起分发的,用户不需要额外干预.而外部的plugin是由用户自行开发,实现某种特殊的功能.
可以通过 show plugins来查看。如果library栏位为null,就表示为内置的plugin,否则为外部的plugin。
mysql> show plugins;
+--------------------------------+----------+--------------------+--------------------+---------+
| Name | Status | Type | Library | License |
+--------------------------------+----------+--------------------+--------------------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| mysql_old_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL
..........省略....................
| PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL |
| FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL |
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
| rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL |
+--------------------------------+----------+--------------------+--------------------+---------+
41 rows in set (0.00 sec)
可以看到已经加载了一个外部的plugin rpl_semi_sync_master ,库文件名称为semisync_master.so
plugin的加载主要有两种方式,
第一种方法是自动加载,通过在my.cnf文件设置,在启动的时候由mysqld读取该文件加载;
my.cnf的格式为
plugin-load=plugin=plugin.so
[mysqld]
plugin-load=rpl_semi_sync_slave=semisync_slave.so
定义加载rpl_semi_sync_slave,然后重启mysql服务生效.
第二种方是通过install方法在mysql服务器运行期间加载.
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected (0.00 sec)
mysql> select name,dl from mysql.plugin;
+----------------------+--------------------+
| name | dl |
+----------------------+--------------------+
| rpl_semi_sync_master | semisync_master.so |
| rpl_semi_sync_slave | semisync_slave.so |
+----------------------+--------------------+
2 rows in set (0.00 sec)
确认手动的方式已经成功加载plugin.在运行期间加载的好处是不需要重启mysql服务器。且在下一次mysql服务器
重启的时候该pluin会一直自动载加
无论是手动还是自动的方式,我们都可以能过unistall的方式在服务器运行期间手动unload plugin。
mysql> select name,dl from mysql.plugin;
+----------------------+--------------------+
| name | dl |
+----------------------+--------------------+
| rpl_semi_sync_master | semisync_master.so |
| rpl_semi_sync_slave | semisync_slave.so |
+----------------------+--------------------+
2 rows in set (0.00 sec)
mysql> uninstall plugin rpl_semi_sync_slave;
Query OK, 0 rows affected (0.00 sec)
mysql> select name,dl from mysql.plugin;
+----------------------+--------------------+
| name | dl |
+----------------------+--------------------+
| rpl_semi_sync_master | semisync_master.so |
+----------------------+--------------------+
1 row in set (0.00 sec)
对于内置的pluin的关闭方式,通过在my.cnf文件定义关闭。
格式:pluginname=OFF
比如
[mysqld]
MRG_MYISAM=OFF
plugin的信息,主要通过mysql.plugin表和information_schema.pluging,mysql客户端命令 show plugins的信息
也要来自IS的plugins表