Depois de instalar o MySQL-5.1.73, coloquei o padrão my-huge.cnf em /etc/my.cnf e iniciei o serviço mysql. Estava rodando sem nenhum problema. Agora, ajustei alguns parâmetros no arquivo /etc/my.cnf. Abaixo estão os parâmetros que alterei.
[mysqld]
key_buffer_size = 298M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 50
query_cache_size = 32M
query_cache_limit = 1M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 2
e descomentei essas variáveis para o InnoDB. No arquivo padrão, foi comentado mesmo que o INNODB estivesse ativo.
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 1127M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
Agora, para verificar se o InnoDB está disponível ou não, executei o show engines
comando. Mas o InnoDB não está listado nisso. Em seguida, executei o comando abaixo do comando:
mysql> show variables like '%innodb%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| have_innodb | NO |
| ignore_builtin_innodb | OFF |
+-----------------------+-------+
2 rows in set (0.00 sec)
mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
7 rows in set (0.00 sec)
Eu não consigo encontrar onde eu fiz o erro? Você pode por favor ajudar?
Adicionando o caminho, o problema foi resolvido, mas não sei se o caminho está correto ou não!:
Verificar o log de erros certamente ajudou aqui. Com base no log de erros:
InnoDB: Error: data file /var/lib/mysql/ibdata1 is of a different size
InnoDB: 133760 pages (rounded down to MB)
InnoDB: than specified in the .cnf file 128000 pages!
InnoDB: Could not open or create data files.
Then, I commented - #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
Depois disso, recebi a mensagem de erro abaixo no arquivo de log de erros:
InnoDB: Error: log file /var/lib/mysql/ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
140430 17:13:37 [ERROR] Plugin 'InnoDB' init function returned error.
140430 17:13:37 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Then, I commented #innodb_log_file_size = 256M By default #innodb_log_file_size = 5M.
Agora, iniciei novamente o serviço mysql e descobri que o Innodb foi carregado como mecanismo padrão.
Você descobriu no log de erros que o InnoDB se recusa a iniciar se o arquivo de configuração definir
innodb_log_file_size
um tamanho diferente do tamanho físico dosib_logfile*
arquivos em seu diretório de dados.A razão para isso é que o arquivo de log é usado durante a recuperação de falhas. Se o InnoDB tenta inicializar, mas os arquivos de log são suspeitamente do tamanho errado, é possível que sejam os arquivos errados. O InnoDB decide não tentar travar a recuperação usando os arquivos de log errados, porque a aplicação dos arquivos errados pode corromper seus dados de forma irreparável. Portanto, acredite ou não, desligar o mecanismo de armazenamento é o melhor resultado.
Você pode adicionar outra linha ao seu arquivo de configuração para fazer o mysqld se recusar a iniciar se o InnoDB falhar ao iniciar:
No MySQL 5.6, eles adicionaram mais flexibilidade para que o InnoDB redimensionasse os arquivos de log se você alterasse a entrada do arquivo de configuração. Aqui está um blog que explica isso com mais detalhes: http://www.mysqlperformanceblog.com/2013/09/05/my-favorite-secret-mysql-5-6-feature/
Algumas outras dicas
O tamanho padrão do arquivo de log do InnoDB de 5 MB é totalmente subdimensionado para a maioria dos sites de produção. Você pode ler este blog para obter um método para estimar o tamanho do arquivo de log que seu site precisa: http://www.mysqlperformanceblog.com/2008/11/21/how-to-calculate-a-good-innodb-log-file- Tamanho/
Você não está habilitando o plugin InnoDB. O MySQL 5.1 vem com duas implementações do InnoDB. Você pode obter mais desempenho e escalabilidade gratuitamente sem atualizar se mudar do InnoDB "integrado" (estaticamente vinculado ao MySQL 5.1) para o plug-in InnoDB. O plug-in é onde toda a nova engenharia é implementada. Se você não habilitá-lo, estará virtualmente usando o InnoDB como existia no MySQL 5.0. Consulte http://dev.mysql.com/doc/refman/5.1/en/replacing-builtin-innodb.html para obter detalhes.