安装mysql with innodb 支持,支持事务的mysql

默认安装的mysql使用的是myisam引擎,是比较高效的引擎,但是最近有些需求需要用到mysql 事务,而myisam是不支持事物的,在网上找了一下,重新编译数据库并做了一些配置。

1.编译

在常用的mysql编译参数里,加上 –with-plugins= innobase ,这个使得mysql自动加上inno引擎

我的全部编译参数是(我用的是mysql 5.3的版本,老版本的inno支持可能不是这样写法,可能是–with-inno

./configure –prefix=/usr/local/mysql –localstatedir=/usr/local/mysql/var/ –with-server-suffix=-enterprise-gpl –without-debug –with-big-tables –with-extra-charsets=latin1,gb2312,big5,utf8,GBK –with-extra-charsets=all –with-pthread –enable-static –enable-thread-safe-client –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static –enable-assembler –with-plugins=innobase

make && make install

重启mysql后,进入mysql 输入

show engines;可以看到有无innodb的支持,如果有,就是编译成功了,先关掉mysql,打开/etc/my.cnf编辑(我是用mysql中的huge.cnf为模板,那个模板适合比较大量的数据)

将 配置文件中inno字样的前面的#注释去掉,在mysqld里面加上

default-storage-engine = InnoDB

这样之后创建的表,默认则为inno格式,如果已有的表,要改成inno,用

alter table {table_name} ENGINE=’InnoDB’;

之后重新启动mysql即可,我这里碰到一些问题,重启mysql后一直没有启动innodb的支持,看了下log文件,发现是inno的数据文件大小之类的不符配置,根据出错提示将那些数据文件删掉即可。

测试是否支持事务:

在mysql里,

CREATE TABLE test.user ( id int NOT NULL DEFAULT  0);

begin; insert into test.user values (3);

select * from test.user;

此时应该看到有一条记录

rollback;

select * from test.user

如果此时看到空记录,就对了

Leave a Reply