Looking at your my.cnf, you have defaults for many things. What you desperately need is a full Cleanup of the InnoDB Infrastructure. Click here to see the Pictorial Representation of the InnoDB Infrastructure.
STEP 01) Run this query
SELECT CEILING(Total_InnoDB_Bytes/POWER(1024,2)) RIBPS FROM
(SELECT SUM(data_length+index_length) Total_InnoDB_Bytes
FROM information_schema.tables WHERE engine='InnoDB') A;
This will tell you how big to set innodb_buffer_pool_size (in MB).
Let's say that answer came up 1024.
STEP 02) Run this query
SELECT CEILING(Total_MYI_Bytes/POWER(1024,2)) RKBS FROM
(SELECT SUM(index_length) Total_MYI_Bytes FROM information_schema.tables
WHERE engine='MyISAM' AND table_schema NOT IN
('information_schema','performance_schema','mysql')) A;
This will tell you how big to set key_buffer_size (in MB).
Let's say that answer came up 64.
STEP 03 : Run this query
SET GLOBAL innodb_fast_shutdown = 0;
This will perform a full transactional commit of any Transactions leftover in the Transaction Logs during the time of shutdown. The Transaction Logs are
/var/lib/mysql/ib_logfile0
/var/lib/mysql/ib_logfile1
STEP 04 : Dump all data out to a text file
cd /root
mkdir datadump
cd datadump
MYSQLDUMP_CONNECT="-uroot -ppassword"
MYSQLDUMP_OPTIONS="--single-transaction --routines --triggers"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --flush-privileges --all-databases"
mysqldump ${MYSQLDUMP_CONNECT} ${MYSQLDUMP_OPTIONS} > MySQLData.sql
STEP 05 : Shutdown MySQL
service mysql stop
STEP 06 : Add the following to my.cnf
If you are using MySQL 5.5 (or MySQL 5.1 with InnoDB Plugin Enabled), add these
[mysqld]
key_buffer_size=64M
innodb_file_per_table
innodb_open_files=1000
innodb_buffer_pool_size=1024M
innodb_log_file_size=256M
innodb_fast_shutdown=0
innodb_read_io_threads=16
innodb_write_io_threads=16
join_buffer_size=4M
read_buffer_size=4M
read_rndbuffer_size=4M
If you are using MySQL 5.0, add these
[mysqld]
key_buffer_size=64M
innodb_file_per_table
innodb_open_files=1000
innodb_buffer_pool_size=1024M
innodb_log_file_size=256M
innodb_fast_shutdown=0
innodb_thread_concurrency=0
join_buffer_size=4M
read_buffer_size=4M
read_rndbuffer_size=4M
Please note I chose innodb_log_file_size to 25% of innodb_buffer_pool_size
STEP 07 : Make room for new InnoDB Files
cd /var/lib/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile`.bak
mv ibdata1 ib_data1.bak
STEP 08 : Start MySQL
service mysql start
STEP 09 : Load the Data back
mysql -uroot -p < /root/datadump/MySQLData.sql
STEP 10 : If everything is running better, then run this:
rm -f ib_logfile0.bak
rm -f ib_logfile1.bak
rm -f ibdat1.bak
All done with InnoDB Cleanup.
I have suggested InnoDB improvements like this many times before
Give it a Try !!!