动态加载Innodb Plugin
曾经写过一篇关于XtraDB的体验篇的文章,里面曾提到我们可以动态将XtraDB加载到运行的MySQL中;MySQL中引擎我们都可以把它看作是一个个功能各异的插件(plugin),可以根据需要来加载卸载禁用启用,相当的方便灵活,只要你想你也可以写自己的ENGINE,然后把它加载进来,而这个plugin也是正是MySQL独特的地方所在。当初也就是那么一提,并没有具体操作怎么就动态把一个plugin加进来。而这次也是工作中碰到了,必须要这么做,其实,就是一句命令的事情,但是还有些细小的东西需要注意一下,下面说两句。
故事是这样的,这周的一天早,照例打开cacti扫一眼数据的负载以及运行情况。当我打开评论的那组的监控时,发现主库的mysql模板,清一色的nan,不出图了,乖乖之前不是好好的吗,谁动了,没改什么呀,我的脑子飞速回忆,同时,查看cacti的配置和主库上snmp.conf以及cacti用户权限,没有什么不对的地方,也通过手动执行命令去获取相应数据,测试了几个图,结果返回值都是-1,看log,求助大侠们,忙乎半天还是没有找到原因。一个有4也图,我无间点了后两页,咦!!有图呀,并不是全都没有图,发现和Innodb相关的都不出图,可能是….我查看了那个库的表结构发现,都是MyISAM的表,无语了~~但是从库相关innodb的都有图,又发现从库有一些列的表是innodb的,主从怎么会不一样呢(不许手动改从库),后来show plugins发现,主库没有编译innobase引擎,也就不支持InnoDB的表类型,即便你的sql语句engine=innodb,mysql还是会将其改成默认的myisam,而这样的语句复制到从库后就是正常所要设置的innodb的表。要知道,我们的主库是做了DRBD的,而这个架构建议数据库的引擎最好要选InnoDB,因为如有异常发生当数据库重启时innodb会自动修复,回滚失败操作。虽然一直也没有什么问题出现,但是还是需要将其调整至更加安全可靠。
动态加载Innodb Plugin,执行命令:
mysql>INSTALL PLUGIN INNODB SONAME ‘ha_innodb_plugin.so’;
mysql> show plugins;
+――――+――――+―――――――+――――――――-+―――-+
| Name | Status | Type | Library | License |
+――――+――――+―――――――+――――――――-+―――-+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| InnoDB | ACTIVE | STORAGE ENGINE | ha_innodb_plugin.so | GPL |
+――――+―――-+―――――――-+――――――――+―――+
看似简单,但是要想完成动态加载innodb plugin是有条件的:
1. 使用源码编译的,默认innobase没有被编译进来;使用二进制包安装的,在启动前,在my.cnf里面加入skip-innodb或是ignore_builtin_innodb。(我们的是前者)
2. 使用源码编译时,不能使用-with-mysqld-ldflags=-all-static选项,以静态方式编译库,当show global variables like ‘have_%’;的时候,输出有一项是have_dynamic_loading将是NO,这就决定mysql是否支持动态加载plugin;而二进制包安装的mysql,就是动态编译的,支持动态加载plugin,这项为Yes。(我们的是No,杯具啦0_0,不过另有方案)
3. 选择对应的innodb plugin版本,并将其放到basedir/lib/mysql/plugin下面,plugin的版本和MySQL库的对应表如下。
满足了上面3个条件后,你就可以顺利的执行前面的那个条命令了,无需停掉你的服务,动态的将innodb加载进来。追求更好的性能,和体验新特性的朋友可以尝试用用innodb plugin。一般来说,MySQL的发行版中内置的Innobase的版本低于InnoDB Plugin,但也是一个不断更新的过程,想尝鲜的话那就自己下载最新的plugin,说不定可以提早让你的MYSQL飞起来。
建议继续学习:
- 分享一个JQUERY颜色选择插件 (阅读:12721)
- jQuery Color Animations颜色动画插件 (阅读:7144)
- Innodb IO优化-配置优化 (阅读:6755)
- 精于图片处理的10款jQuery插件 (阅读:6283)
- Innodb分表太多或者表分区太多,会导致内存耗尽而宕机 (阅读:6202)
- vim 常用插件推荐 (阅读:6084)
- WordPress插件开发 -- 在插件使用数据库存储数据 (阅读:5722)
- Innodb 表和索引结构 (阅读:4859)
- nyroModal:强大的jQuery弹出层插件 (阅读:4847)
- vim的一个js代码整理的插件jsbeautify.vim (阅读:4754)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:zhang 来源: SQL部落
- 标签: Innodb Plugin 动态加载 插件
- 发布时间:2010-11-13 08:51:33
- [71] IOS安全–浅谈关于IOS加固的几种方法
- [70] Twitter/微博客的学习摘要
- [65] 如何拿下简短的域名
- [64] android 开发入门
- [63] Go Reflect 性能
- [62] find命令的一点注意事项
- [60] 流程管理与用户研究
- [59] 读书笔记-壹百度:百度十年千倍的29条法则
- [59] 图书馆的世界纪录
- [58] Oracle MTS模式下 进程地址与会话信