快速预热Innodb Buffer Pool的方法

当innodb_buffer_pool_size大到几十GB或是百GB的时候,因为某些日常升级更新或是意外宕机,而必须要重新启动mysqld服务的之后,就面临一个问题,如何将之前频繁访问的数据重新加载回buffer中,也就是说,如何对innodb buffer pool进行预热,以便于快速恢复到之前的性能状态。如果是光靠Innodb本身去预热buffer,将会是一个不短的时间周期,业务高峰时,数据库将面临相当大的考验,I/O的瓶颈会带来糟糕的性能。那么,该怎么办呢?于是大家便想出一些办法,最后Percona把这个需求,在XtraDB中最为一个新特性实现这个功能。
      » 继续阅读 快速预热Innodb Buffer Pool的方法

动态加载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’;
      » 继续阅读 动态加载Innodb Plugin

InnoDB的”替代品”:Percona XtraDB

关于

XtraDBPercona TeamInnoDB的基础上开发出来的一个更加强大的存储引擎,它百分百的兼容InnoDB,我们可以用XtraDB来替代为MySQL的发展做出历史性贡献的InnoDB,新的XtraDB引擎将具有更加强大的性能优势,以及良好的扩展性和一些新特性。

Percona20081216日正式对外公布Percona XtraDB存储引擎,当时版本为1.0.2-1。在09年有相继发布了release 3/4/5/8,目前最新的版本为Percona-XtraDB 1.0.4-8

安装XtraDB存储引擎

XtraDB的安装有这么几种:一是现成的RPMS包安装,不过这些包仅限于x86_64RedHat/CentOS 4/5系统下,而且MySQL的版本为5.1.30;还有就是通过整体编译MySQL源码包的安装,即将新的XtraDB引擎的代码整合到MySQL的源码中,进行重新编译。前面这两种都需要重新搭建MySQL数据库,例外还有一种,就是动态的将XtraDB加载进正在运行MySQL中,这个看上去很符合生产的要求。
      » 继续阅读 InnoDB的”替代品”:Percona XtraDB