AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 64252
Accepted
ursitesion
ursitesion
Asked: 2014-05-01 12:39:44 +0800 CST2014-05-01 12:39:44 +0800 CST 2014-05-01 12:39:44 +0800 CST

O mecanismo InnoDB não está carregando após ajustar os parâmetros

  • 772

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 enginescomando. 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.

mysql innodb
  • 1 1 respostas
  • 3082 Views

1 respostas

  • Voted
  1. Best Answer
    Bill Karwin
    2014-05-01T13:49:15+08:002014-05-01T13:49:15+08:00

    Você descobriu no log de erros que o InnoDB se recusa a iniciar se o arquivo de configuração definir innodb_log_file_sizeum tamanho diferente do tamanho físico dos ib_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:

    innodb=force
    

    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.

    • 1

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve