Looks like the InnoDB plugin is completely broken with MySQL-5.1.24; at least there is no luck for me so far to set it up right. First, the Makefile is broken. Second, I tried to do a static build of InnoDB plugin with MySQL server (–enable-innodb and –with-plugin-innobase) resulted in partial InnoDB plugins (Information schema) missing the main one as shown below:
1 2 3 |
<span class="lnum"> 1: </span>mysql> show plugins; |
1 2 3 |
<span class="lnum"> 2: </span>+---------------------+--------+--------------------+---------+---------+ |
1 2 3 |
<span class="lnum"> 3: </span>| Name | Status | Type | Library | License | |
1 2 3 |
<span class="lnum"> 4: </span>+---------------------+--------+--------------------+---------+---------+ |
1 2 3 |
<span class="lnum"> 5: </span>| binlog | ACTIVE | STORAGE ENGINE | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 6: </span>| partition | ACTIVE | STORAGE ENGINE | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 7: </span>| ARCHIVE | ACTIVE | STORAGE ENGINE | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 8: </span>| BLACKHOLE | ACTIVE | STORAGE ENGINE | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 9: </span>| CSV | ACTIVE | STORAGE ENGINE | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 10: </span>| FEDERATED | ACTIVE | STORAGE ENGINE | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 11: </span>| MEMORY | ACTIVE | STORAGE ENGINE | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 12: </span>| INNODB_TRX | ACTIVE | INFORMATION <span class="kwrd">SCHEMA</span> | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 13: </span>| INNODB_LOCKS | ACTIVE | INFORMATION <span class="kwrd">SCHEMA</span> | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 14: </span>| INNODB_LOCK_WAITS | ACTIVE | INFORMATION <span class="kwrd">SCHEMA</span> | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 15: </span>| INNODB_CMP | ACTIVE | INFORMATION <span class="kwrd">SCHEMA</span> | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 16: </span>| INNODB_CMP_RESET | ACTIVE | INFORMATION <span class="kwrd">SCHEMA</span> | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 17: </span>| INNODB_CMPMEM | ACTIVE | INFORMATION <span class="kwrd">SCHEMA</span> | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 18: </span>| INNODB_CMPMEM_RESET | ACTIVE | INFORMATION <span class="kwrd">SCHEMA</span> | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 19: </span>| MyISAM | ACTIVE | STORAGE ENGINE | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 20: </span>| MRG_MYISAM | ACTIVE | STORAGE ENGINE | <span class="kwrd">NULL</span> | GPL | |
1 2 3 |
<span class="lnum"> 21: </span>+---------------------+--------+--------------------+---------+---------+ |
1 2 3 |
<span class="lnum"> 22: </span>16 <span class="kwrd">rows</span> <span class="kwrd">in</span> <span class="kwrd">set</span> (0.00 sec) |
As you can see the main InnoDB plugin is missing and rest of the InnoDB information schema plugins for compression and locks are present. So, I built a dynamically loadable plugin separately and tried to install it using INSTALL PLUGIN, but it fails.
1 2 3 |
<span class="lnum"> 1: </span>mysql> INSTALL PLUGIN INNODB SONAME <span class="str">'ha_innodb.so'</span>; |
1 2 3 |
<span class="lnum"> 2: </span>ERROR 1126 (HY000): Can<span class="str">'t open shared library '</span>/home/y/lib64/mysql/plugin/ha_innodb.so<span class="str">' (errno: 2</span> |
1 2 3 |
<span class="lnum"> 3: </span> cannot open shared object file: No such file or directory) |
1 2 3 |
<span class="lnum"> 4: </span>mysql> INSTALL PLUGIN INNODB SONAME 'ha_innodb.so<span class="str">';</span> |
1 2 3 |
<span class="lnum"> 5: </span>ERROR 1123 (HY000): Can't <span class="kwrd">initialize</span> <span class="kwrd">function</span> <span class="str">'INNODB'</span>; Plugin initialization <span class="kwrd">function</span> failed. |
You can see the plugin .so should be in lib/mysql/plugin directory as opposed to top lib/mysql directory. And when I tried to select Information_schema.InnoDB_locks on a fresh database, the server crashes..
1 2 3 |
<span class="lnum"> 1: </span>mysql> <span class="kwrd">select</span> * <span class="kwrd">from</span> Information_schema.Innodb_locks; |
1 2 3 |
<span class="lnum"> 2: </span>ERROR 2013 (HY000): Lost <span class="kwrd">connection</span> <span class="kwrd">to</span> MySQL server during query |
1 2 3 |
1 2 3 |
The backtrace looks like .. |
|
I decided not to file any bugs yet as InnoDB team looks like working on getting this to work with 5.1.24. Now, I started a new build with 5.1.23 to see how it goes.
The consensus is that there will need to be a differently compiled version of the plug-in for each version of the server. Sucks, but that is the way it is.
Thanks, Venu, for your posting. Just a few quick comments …
As you correctly point out, there are issues in making the InnoDB Plugin work with MySQL 5.1.24. Unfortunately, just days after the release of the new InnoDB Plugin, tested to work with 5.1.23, MySQL released 5.1.24, which turns out is incompatible with the plugin. This affects both binary and source.
You’re absolutely right that we (Innobase) are working on a solution to the problem. We noted on the InnoDB Forum http://forums.innodb.com/read.php?5,36 that this was a known issue with respect to binaries, and the bug you site is an issue with respect to source builds.
One other thing to note is that with 5.1.23, there is already a statically-linked built-in InnoDB in MySQL. In order to plug in the new InnoDB Plugin in binary, you must disable the built-in InnoDB using the parameter skip-innodb, before you can issue the command INSTALL PLUGIN, as documented in the manual for the plugin: http://www.innodb.com/doc/innodb_plugin-1.0/innodb-plugin-installation.html#innodb-plugin-installation-dynamic
Did you have that setting when you tried to build a dynamically loadable plugin separately?
In general, there might be a short-term solution for 5.1.24, but there is a bigger problem: the API for storage engines is undocumented and unstable from release to release. Furthermore, a strict version compatibility check is enforced, even if the relevant data structures and APIs did not in fact change between versions. See this blog http://www.mysqlperformanceblog.com/2008/04/20/mysql-and-plugin-binaries/ where Vadim Tkachenko discusses some of the relevant issues.
So, some changes from MySQL are needed so that a given release of the InnoDB Plugin might work with multiple releases of MySQL. We are hopeful these changes can be implemented in short order, but MySQL will need to assess what needs to be done, and what can be done easily/quickly/soon.
So, Kevin, it might be currently true that “there will need to be a differently compiled version of the plug-in for each version of the server”. It does suck, and that is the way it is … for now. Keep the faith!
In the meantime, Venu, please do experiment with the InnoDB Plugin using 5.1.23, and let us know your findings (best done on the InnoDB Forums). Results like those posted on the MySQL Performance Blog recently are very encouraging.
Thanks for your interest!
[…] I figured out the reason for MySQL Server 5.1.24 crash when used with InnoDB plugin 1.0. As I had a older my.cnf in the path and it had […]
Hi Venu,
To summarize what should work and what is know to have problems about innodb_plugin-1.0.0:
* The binaries should work with MySQL 5.1.23 standard binary distro (if you compile 5.1.23 from source you’d better also compile the plugin, either statically or dynamically)
* The binaries cannot be plugged into 5.1.24 because of the version check performed by MySQL (you will get an error if you try to do so)
* The source should compile and work with 5.1.23 or 5.1.24 sources, it fails to install with that @MKDIR_P@ error. This is fixable if you re-create the autotool files by running ./BUILD/autorun.sh before ./configure (I already fixed this here so the next version will be ok)
The fact that you compiled the plugin statically (./configure –with-plugins=innobase) and only the I_S plugins are shown by “show plugins;” is very strange.
The crash that followed when trying to SELECT from the I_S tables is not a surprise because the code there is trying to access InnoDB’s (as in main innodb plugin – the storage engine) structures which are not initialized because it is not loaded. The I_S plugins are meaningless without the storage engine plugin.
Did you actually resolved the problem? Some issue with my.cnf?
Thanks!
Vasil,
Thanks for the info, check this.
https://venublog.com/2008/04/23/simple-way-to-crash-innodb-plugin-10/
It is not a real scenario as this is a negative case, but good to fix it though as it is leading to a crash… and it may be a common practice for many individiuls in the initial days
Thanks Ken for the update.
Yup, I was able to get around the issues and I have a working copy of 5.1.24 with InnoDB 1.0. I will post the results later
Hi,
same issue here.
It got failed to install even in 5.1.22-rc though file exist in the default pulgin dir and having sufficient privilges to user/group..
mysql> INSTALL PLUGIN INNODB SONAME ‘ha_innodb.so’;
ERROR 1126 (HY000): Can’t open shared library ‘ha_innodb.so’ (errno: 22 cannot open shared object file: Permission denied)
Innodb Plugin vs Innodb built-in…
For MySQL 5.1 version upgrade and MyISAM to Innodb conversion in the next phase we need to know if Innodb plugin is better than Innodb builtin…….