背景
将mysql 5.1.72数据库服务从一台Linux机器迁移到别的机器,是整个安装路径、数据路径、日志路径一起拷贝过去,然而服务启动后,原InnoDB的都访问不了,报错“Unknown engine innoDB”。
MySQL 5.1版本默认不安装innodb引擎,允许存储引擎开发商以动态方式加载引擎,官方称为InnoDB Plugin,可将其视为InnoDB 1.0.x版本。MySQL 5.5版本对应InnoDB的1.1.x版本,MySQL 5.6版本对应InnoDB-1.2.x。
解决过程
1.查看支持引擎
由于报错是不认识该引擎,所以使用以下命令查看支持的引擎
show engines;
SHOW variables like 'have_%';
可以发现当前服务并没有安装InnoDB引擎
2.安装引擎插件
由于安装路径是全部拷贝,所以${mysql_home}/lib/mysql/plugin下已经存在了插件的共享库文件,在mysql的'plugin_dir'下有ha_innodb_plugin.so和ha_innodb.so两个文件,只需要使用命令安装即可,(如果没有需要下载拷贝到目录)
进入mysql命令行后,安装引擎插件
INSTALL PLUGIN InnoDB SONAME 'ha_innodb.so';
第一次执行报错 Can't initialize function 'INNODB'; Plugin initialization function failed.,由于使用的数据目录下面已经存在了innoDB引擎的数据,所以将这些数据库文件夹和共享表空间ibdata1先迁移到其它文件夹,重启mysql服务,再执行安装命令。
启动后发现已经支持了innodb引擎,再将原来的数据库文件夹和共享表空间ibdata1迁移回来,再重启mysql服务
结果
成功启动并能够访问innodb引擎的数据表。