
Acabei de adicionar as seguintes linhas em /etc/mysql/my.cnf depois de converter um banco de dados para usar o mecanismo InnoDB.
innodb_buffer_pool_size = 2560M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 16
innodb_flush_method = O_DIRECT
Mas gerou o erro "ERROR 2013 (HY000) na linha 2: Conexão perdida com o servidor MySQL durante a consulta" ao reiniciar o mysqld. E o log de erros do mysql mostra o seguinte
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned error.
100118 20:52:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100118 20:52:52 [ERROR] Unknown/unsupported table type: InnoDB
100118 20:52:52 [ERROR] Aborting
Então eu comentei esta linha
# innodb_log_file_size = 256M
E reiniciou o mysql com sucesso.
Eu me pergunto o que são os "5242880 bytes do arquivo de log" mostrados no erro do mysql? É o primeiro banco de dados no mecanismo InnoDB neste servidor, então quando e onde esse arquivo de log é criado? Neste caso, como posso ativar a diretiva innodb_log_file_size em my.cnf?
EDITAR
Tentei excluir /var/lib/mysql/ib_logfile0 e reiniciar o mysqld, mas ainda falhou. Agora mostra o seguinte no log de erros.
100118 21:27:11 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 256 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200
InnoDB: Error: log file ./ib_logfile1 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
Resolução
Funciona agora depois de excluir ib_logfile0 e ib_logfile1 em/var/lib/mysql
Responder1
O InnoDB é extremamente exigente quanto à sua configuração; se algo não estiver certo, ele simplesmente desistirá e irá para casa. Para fazer uma alteração no tamanho do arquivo de log sem perda de dados:
- Reverta quaisquer alterações de configuração feitas no tamanho do arquivo de log e inicie o MySQL novamente.
- No seu MySQL em execução: SET GLOBALinnodb_fast_shutdown=0;
- Pare o MySQL
- Faça a alteração da configuração no tamanho do arquivo de log.
- Exclua os dois arquivos de log.
- Inicie o MySQL. Ele reclamará da falta de arquivos de log, mas os criará e tudo ficará bem.