Olhando para o meu my.cnf, você tem padrões para muitas coisas. O que você precisa desesperadamente é de uma limpeza completa da infra-estrutura do InnoDB. Clique aqui para ver a Representação Pictórica da Infra-estrutura InnoDB .
PASSO 01) Execute esta consulta
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;
Isso lhe dirá o tamanho da configuração de innodb_buffer_pool_size (em MB).
Digamos que a resposta surgiu em 1024.
PASSO 02) Execute esta consulta
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;
Isto irá dizer-lhe o quão grande é definir key_buffer_size (em MB).
Digamos que a resposta surgiu em 64.
PASSO 03: Execute esta consulta
SET GLOBAL innodb_fast_shutdown = 0;
Isso executará uma confirmação transacional completa de qualquer Transação restante nos Logs de transações durante o encerramento. Os logs de transações são
-
/var/lib/mysql/ib_logfile0
-
/var/lib/mysql/ib_logfile1
PASSO 04: despeje todos os dados em um arquivo de texto
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
PASSO 05: Shutdown MySQL
service mysql stop
PASSO 06: Adicione o seguinte a my.cnf
Se você estiver usando o MySQL 5.5 (ou MySQL 5.1 com InnoDB Plugin Enabled), adicione estes
[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
Se você estiver usando o MySQL 5.0, adicione estes
[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
Por favor, note que eu escolhi innodb_log_file_size para 25% de innodb_buffer_pool_size
PASSO 07: Deixe espaço para novos arquivos InnoDB
cd /var/lib/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile'.bak
mv ibdata1 ib_data1.bak
PASSO 08: Inicie o MySQL
service mysql start
PASSO 09: Coloque os dados de volta
mysql -uroot -p < /root/datadump/MySQLData.sql
PASSO 10: Se tudo estiver funcionando melhor, execute isso:
rm -f ib_logfile0.bak
rm -f ib_logfile1.bak
rm -f ibdat1.bak
Tudo feito com o InnoDB Cleanup.
Sugeri melhorias do InnoDB como essa muitas vezes antes
-
Oct 29, 2010
: Como: Limpar um mecanismo de armazenamento mysql InnoDB? -
Apr 13, 2011
: Como dimensionar configurações e variáveis my.cnf para passar de um servidor de 16 GB para 128 GB -
Feb 03, 2012
: Otimização programada de tabelas no MySQL InnoDB -
Mar 25, 2012
: Por que a loja InnoDB todos os bancos de dados em um arquivo? -
Apr 01, 2012
: O innodb_file_per_table é aconselhável? -
Jul 20, 2012
: Recuperar espaço em disco após excluir o banco de dados Magento MySQL
Experimente!