Estou seguindo esta solução aqui /programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261 e tentei aumentar o meu innodb_buffer_pool_size
para 4G e mais tarde 1G (também 1024M) em além do tamanho do arquivo de log, mas o mysql não começará com esses valores. Se eu voltar a 512M, o mysql começará bem.
Como posso resolver isso? Meu servidor tem 16 GB e, de acordo com o Webmin sysinfo:
Real memory 15.62 GB total, 3.13 GB used
Enquanto isso, também encontrei o log de erros:
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 em / var / lib / mysql
120529 10:29:33 [Nota] O plug-in 'FEDERATED' está desativado.
120529 10:29:33 InnoDB: o heap de memória InnoDB está desativado
120529 10:29:33 InnoDB: Mutexes e rw_locks usam componentes atômicos do GCC
120529 10:29:33 InnoDB: As tabelas compactadas usam o zlib 1.2.3
120529 10:29:33 InnoDB: Usando AIO nativo do Linux
120529 10:29:33 InnoDB: Inicializando buffer pool, tamanho = 1.0G
120529 10:29:33 InnoDB: inicialização concluída do buffer pool
InnoDB: Erro: o arquivo de log ./ib_logfile0 é de tamanho diferente 0 134217728 bytes
InnoDB: além do especificado no arquivo .cnf 0 268435456 bytes!
Respostas:
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 momento, era evidente que você definia innodb_log_file_size para 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 da minha resposta do StackOverflow na sua pergunta, você precisava 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 do innodb está sendo criado.fonte
service mysqld stop
.Com base no erro no log, acho que você fez o seguinte:
Se você alterar o tamanho do arquivo de log, remova os arquivos de log antigos. O Innodb não será iniciado com êxito 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 correto.
fonte
O buffer_pool deve ser configurado 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, é necessário
fonte
Também pode haver algum problema no 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 é executada em pedaços. O tamanho do pedaço é definido pelainnodb_buffer_pool_chunk_size
opção de configuração, que possui um padrão de 128M. Para obter mais informações, consulte Configurando o tamanho do pedaço do buffer pool 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 que não seja igual 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
que não seja menor que o tamanho especificado do buffer pool.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
innodb_buffer_pool_size
valor válido porque 8G é um múltiplo deinnodb_buffer_pool_instances=16 * innodb_buffer_pool_chunk_size=128M
, que é 2G.fonte