mysql plugin_MySQL的plugin

卫飞鹏
2023-12-01

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表

 类似资料: