Bug #60544 mysqld requires libaio.so and does not start
Submitted: 19 Mar 2011 9:30 Modified: 20 Feb 2012 23:52
Reporter: Giuseppe Maxia Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Documentation Severity:S1 (Critical)
Version:5.5.10 OS:Linux (CentOS 5.5, Ubuntu 10.10)
Assigned to: John Russell CPU Architecture:Any
Tags: install, library, linux, MySQL, regression

[19 Mar 2011 9:30] Giuseppe Maxia
Description:
mysql_install_db fails when trying to install 5.5.10. 
Apparently, it depends on a library that it is not found on Linux.

./scripts/mysql_install_db --datadir=~/path/to/your/data/ --basedir=$PWD --user=$USER
Installing MySQL system tables...
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

The same procedure works well with MySQL 5.5.9. This is a regression.

$ ldd 5.5.9/bin/mysqld
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00000038b6600000)
	libm.so.6 => /lib64/libm.so.6 (0x00000038b6a00000)
	librt.so.1 => /lib64/librt.so.1 (0x00000038b7200000)
	libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000038b7600000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00000038b5a00000)
	libc.so.6 => /lib64/libc.so.6 (0x00000038b5600000)
	/lib64/ld-linux-x86-64.so.2 (0x00000038b5200000)

$ ldd 5.5.10/bin/mysqld
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00000038b6600000)
	libaio.so.1 => not found
	libm.so.6 => /lib64/libm.so.6 (0x00000038b6a00000)
	librt.so.1 => /lib64/librt.so.1 (0x00000038b7200000)
	libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000038b7600000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00000038b5a00000)
	libc.so.6 => /lib64/libc.so.6 (0x00000038b5600000)
	/lib64/ld-linux-x86-64.so.2 (0x00000038b5200000)

How to repeat:
Using the package mysql-5.5.10-linux2.6-x86_64.tar.gz, unpack and try to install:

./scripts/mysql_install_db --datadir=~/path/to/your/data/ --basedir=$PWD --user=$USER
Installing MySQL system tables...
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
[19 Mar 2011 10:47] Peter Laursen
@Guisseppe .. being an Italian I think you should know where to get it!
http://www.ruffino.com/pagine/pagina.aspx?ID=Libaio001&L=EN

(and sorry!)
[19 Mar 2011 11:13] Giuseppe Maxia
@Peter
Very funny.
But I can't figure out how you managed to misspell my name twice in a single occurrence.
[19 Mar 2011 22:44] Peter Laursen
sorrrrrry  Guisssssseppe -- Petttter. :-)
[21 Mar 2011 13:03] Sveta Smirnova
Thank you for the report.

Verified as described. Moreover there is no note about new requirement at http://dev.mysql.com/doc/refman/5.5/en/news-5-5-10.html
[16 Apr 2011 11:57] Davi Arnaut
What is the request in this bug report? More documentation? libio is required for asynchronous I/O on Linux.
[16 Apr 2011 12:47] Giuseppe Maxia
Davi,
It's a regression.
MySQL 5.5 works without libaio until 5.5.9.
[16 Apr 2011 13:41] Davi Arnaut
Giuseppe,

Probably because they were improperly built, or something else. The changelog for 5.5.4 explicitly states that "MySQL server now has a dependency on the libaio library". This added dependency was intentional, if it wasn't there in earlier version, it was a separate bug.

Again, the point is that libaio is _required_ for native asynchronous I/O (AIO) on Linux. Do you want us to remove support for AIO on InnoDB?
[16 Apr 2011 14:03] Giuseppe Maxia
Davi,
I am comfortable with MySQL 5.5 requiring libaio. The problem was that both 5.5.8 and 5.5.9, which are GA versions, worked without this dependency.
Whichever the mement this dependency was introduced, there should be a note in the change logs of 5.5.10 mentioning that libaio is now a mandatory requisite.
Since the dependency was deliberate, I believe that an explicit note in the change log will fix the issue.
[16 Apr 2011 14:08] Davi Arnaut
OK. For what it's worth, libaio is there in earlier versions, but linked statically. Someone decided to change this to a dynamic link, but it's not automatically clear to me why (I would guess license restrictions). I'll check on this and change the bug category to docs if the change was intentional. Thanks.
[18 Apr 2011 13:46] Davi Arnaut
Linking libaio dynamically is the way forward. Re-categorizing to documentation so that a note can be added.
[30 Jun 2011 19:46] Chris Wagner
apt-get install libaio1
is the fix for this.  It's not obvious what package needs to be installed to satisfy the dependency but I found it through the fumbling process.
[9 Feb 2012 18:18] Rob Silver
I too have a problem with the library :  libaio-devel
I installed the library on CentOS 6 and it still has problems with it
Is it a specific libaio we are talking about here?
where do I get it
[20 Feb 2012 23:52] John Russell
Added to changelog for 5.5.10: 

The libaio library, which has been used on Linux systems since MySQL
5.5.4, is now linked into mysqld dynamically rather than statically.
If the library is not already on your Linux system, install it using
the appropriate package manager for your distribution. The libaio-dev
library is not sufficient; you must have the libaio library.
[18 Apr 2012 15:08] yunus karada
i want to install mysql-cluster-gpl-7.2.5-debian5.0-x86_64.deb on my debian lenny,
when i was a run 
"./scripts/mysql_install_db --basedir=/usr/local/mysql/opt/mysql/server-5.5/ --datadir=/usr/local/mysql/opt/mysql/server-5.5/data --user=mysql"

script i take this error:
Installing MySQL system tables...
/usr/local/mysql/opt/mysql/server-5.5//bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

Installation of system tables failed!  Examine the logs in
/usr/local/mysql/opt/mysql/server-5.5/ for more information.
...

i tried delete all old mysql intallition on my OS with my.cnf.

what i make this steps?