IT技术博客大学习 共学习 共进步

InnoDB的”替代品”:Percona XtraDB

SQL部落 2009-12-07 13:25:09 浏览 3,364 次

关于

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中,这个看上去很符合生产的要求。

下面我们就来介绍Linux系统下,源码包的安装方法,具体步骤如下:

1.下载MySQL的源码安装包。http://dev.mysql.com/downloads/mysql/5.1.html#source

2.下载Percona XtraDB的源码安装包。https://launchpad.net/percona-xtradb/+download

3.编译安装MySQL

shell>tar -xvf mysql-5.1.35.tar.gz

shell>cd mysql-5.1.35/storage

shell>tar -xvf percona-xtradb-1.0.4-8.tar.gz

shell>rm -rf innobase

shell>mv percona-xtradb-1.0.4-8 innobase

shell>cd ..

shell>./configure -prefix=/usr/local/mysql -with-plugins=innobase && make && make install

shell> cp support-files/my-medium.cnf /etc/my.cnf

shell> cd /usr/local/mysql

shell> chown -R mysql.mysql .

shell> bin/mysql_install_db -user=mysql

shell> chown -R root .

shell> chown -R mysql var

shell> bin/mysqld_safe -user=mysql &

 

4.验证XtraDB引擎的100%兼容Innodb

shell> mysql -uroot -p < eiken_uat_backup.090803230101  (将生产数据库导入新的MySQL)

mysql> show create table user_role\G

*************************** 1. row ***************************

       Table: user_role

Create Table: CREATE TABLE `user_role` (

  `user_name` varchar(100) NOT NULL,

  `role_name` varchar(25) NOT NULL,

…omit….

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

(经测试,所有应用一切正常。)

mysql> create table xtradb_tb(id int(3),engine_name char(120)) engine=innodb; (创建一个使用XtraDB引擎的表)

Query OK, 0 rows affected (0.00 sec)

mysql> show create table xtradb_tb\G

*************************** 1. row ***************************

       Table: xtradb_tb

Create Table: CREATE TABLE `xtradb_tb` (

  `id` int(3) DEFAULT NULL,

  `engine_name` char(120) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

NOTE:如果你要使用XtraDB这个引擎,engine的值依然要设置成InnoDB。)

比较

最后,我们简要比较一下XtraDBInnoDB之间都有哪些变化。分别连上配有不同引擎的数据库服务。比较如下:

1.INFORMATION_SCHEMA中的表数量发生明显变化。

XtraDB 42个(增加了13INNODB开头的表和一个XTRADB_ENHANCEMENTS表,改表中记录逐一介绍了新的XtraDBInnoDB所做的各项改进)

InnoDB 28

2. SHOW INNODB STATUS命令的输出内容的增加。

其中,BUFFER POOL AND MEMORY的内容变得更加丰富。

同时,在输出中,我们还会发现,XtraDB在线程的投入上也有很大提高,在InnoDBFILE I/O的线程仅为4个,而在XtraDB中你会发现为10个,分别是读、写的线程数都各自增加为4个,这对于性能会有很大提升。

P.S.:其实,第一次听到InnoDB的替代引擎,实在最近的一次面试的时候,当时,一听傻了,在想“InnoDB”什么时候除了替代品啦,我真的太孤陋寡闻了(Hiro听到后一定有要鄙视我了,LOL:>)。后来,查了一下,是真地――Percona XtraDB,出来了!

建议继续学习

  1. Innodb IO优化-配置优化 (阅读 7,605)
  2. Innodb分表太多或者表分区太多,会导致内存耗尽而宕机 (阅读 7,566)
  3. Innodb 表和索引结构 (阅读 6,041)
  4. InnoDB线程并发检查机制 (阅读 5,605)
  5. Innodb如何使用内存 (阅读 5,103)
  6. Innodb文件表空间结构 (阅读 5,066)
  7. 快速预热Innodb Buffer Pool的方法 (阅读 4,985)
  8. InnoDB的缓存替换策略及其效果 (阅读 4,783)
  9. 多版本并发控制:PostgreSQL vs InnoDB (阅读 4,563)
  10. InnoDB之Dirty Page、Redo log (阅读 4,483)