Chinaunix首页 | 论坛 | 博客
  • 博客访问: 331757
  • 博文数量: 106
  • 博客积分: 1115
  • 博客等级: 少尉
  • 技术积分: 806
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-04 08:06
文章分类

全部博文(106)

文章存档

2015年(4)

2014年(48)

2013年(15)

2012年(38)

2011年(1)

我的朋友

分类: Mysql/postgreSQL

2014-03-28 23:55:48

http://blog.chinaunix.net/uid-20785090-id-4174865.html

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表

阅读(778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~