Estou seguindo esta solução aqui https://stackoverflow.com/questions/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261 e tentei aumentar meu innodb_buffer_pool_size
para 4G e depois 1G (também 1024M) em além do tamanho do arquivo de log, mas o mysql não iniciará com esses valores. Se eu colocá-lo de volta para 512M, o mysql começa bem.
Como posso resolver isso? Meu servidor é de 16 GB e, de acordo com o Webmin sysinfo:
Real memory 15.62 GB total, 3.13 GB used
Enquanto isso, encontrei o log de erros também:
120529 10:29:32 mysqld_safe mysqld do arquivo pid /var/run/mysqld/mysqld.pid terminou
120529 10:29:33 mysqld_safe Iniciando o daemon mysqld com bancos de dados de /var/lib/mysql
120529 10:29:33 [Nota] Plugin 'FEDERATED' está desabilitado.
120529 10:29:33 InnoDB: O heap de memória do InnoDB está desabilitado
120529 10:29:33 InnoDB: Mutexes e rw_locks usam builtins atômicos GCC
120529 10:29:33 InnoDB: Tabelas compactadas usam zlib 1.2.3
120529 10:29:33 InnoDB: Usando AIO nativo do Linux
120529 10:29:33 InnoDB: Inicializando o pool de buffers, tamanho = 1,0 G
120529 10:29:33 InnoDB: Inicialização completa do buffer pool
InnoDB: Erro: arquivo de log ./ib_logfile0 é de tamanho diferente 0 134217728 bytes
InnoDB: do que especificado no arquivo .cnf 0 268435456 bytes!
As duas respostas dadas por @RickJames e @drogart são essencialmente os remédios. (+1 para cada).
Desde o log de erros que você apresenta, as duas últimas linhas dizem:
Nesse ponto, ficou evidente que você definiu innodb_log_file_size como 256M (268435456)
my.cnf
enquanto os logs de transações do InnoDB (ib_logfile0
,ib_logfile1
) eram respectivamente 128M (134217728) cada. Olhando para o link para minha resposta do StackOverflow em sua pergunta, você teve que fazer o seguinte:Etapa 01) Adicione isso a
my.cnf
:Etapa 02) Execute estes comandos no sistema operacional
Para ter confiança no que está acontecendo, execute
tail -f
o log de erros. Você verá uma mensagem informando quando cada arquivo de log innodb está sendo criado.Com base no erro no log, acho que você fez isso:
Se você alterar o tamanho do arquivo de log, precisará remover os arquivos de log antigos. O Innodb não iniciará com sucesso se os arquivos existentes não corresponderem ao tamanho especificado no arquivo de configuração. Se você os mover para outro lugar, o innodb criará novos arquivos de log de transações do tamanho correto quando for iniciado.
Eu recomendaria mover os arquivos antigos para outro diretório em vez de apenas excluí-los, até que o servidor esteja funcionando com novos arquivos de log e tudo pareça OK.
O buffer_pool deve ser definido para cerca de 70% da RAM disponível se você estiver executando apenas o InnoDB.
O tamanho do log não importa muito. O ideal é configurá-lo para que (Uptime * innodb_log_file_size / Innodb_os_log_written) seja aproximadamente 3600 (1 hora).
Para alterar o tamanho do log, deve-se
Também pode haver algum problema em seu valor fornecido para o tamanho do buffer pool . como aconteceu no meu caso...
Ao aumentar ou diminuir
innodb_buffer_pool_size
, a operação é realizada em blocos. O tamanho do bloco é definido pelainnodb_buffer_pool_chunk_size
opção de configuração, que tem um padrão de 128M. Para obter mais informações, consulte Configurando o tamanho do bloco de buffer do InnoDB .O tamanho do buffer pool deve sempre ser igual ou múltiplo de
innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
. Se você configurarinnodb_buffer_pool_size
para um valor diferente ou múltiplo deinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
, o tamanho do buffer pool será ajustado automaticamente para um valor igual ou múltiploinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
não menor que o tamanho do buffer pool especificado.No exemplo,
innodb_buffer_pool_size
está definido como 8G einnodb_buffer_pool_instances
está definido como 16.innodb_buffer_pool_chunk_size
é 128M, que é o valor padrão.8G é um valor válido
innodb_buffer_pool_size
porque 8G é um múltiplo deinnodb_buffer_pool_instances=16 * innodb_buffer_pool_chunk_size=128M
, que é 2G.O problema é provavelmente com o tamanho que você escolheu para aumentar os logs.
No meu exemplo, o Confluence recomenda um tamanho de log de 2 GB, mas quando fiz essa alteração, mesmo que eu exclua os arquivos de log antigos, o serviço não será iniciado. Reduzi para 1 GB de tamanho e o serviço foi iniciado sem problemas ...