Qual é o file ibdata1 no meu diretório / vair / lib / mysql?

Fazendo login no meu painel de controle do Webmin, notei que praticamente todo o meu espaço em disco está cheio. Procurei pelos dez maiores files / diretórios no meu sistema e descobriu que um file chamado ibdata1 está ocupando cerca de 94 GB de espaço. Reside no meu diretório / vair / lib / mysql.

O que ibdata1 faz? Estou seguro de removê-lo? O meu pressuposto é que é um despejo de algum tipo, mas isso é apenas um palpite selvagem.

O file ibdata1 é o tablespace do sistema paira a infraestrutura InnoDB.

Contém várias classs paira informações vitais paira InnoDB

  • Páginas de dados da tabela
  • Páginas de índice da tabela
  • Dicionário de dados
  • Dados de controle MVCC
    • Desfazer espaço
    • Segmentos de reviewsão
  • Buffer de gravação duplo (Páginas escritas em segundo plano paira evitair o cache do operating system)
  • Inserir buffer (alterações nos índices secundários)

Por favor, note o lugair da ibdata1 no Univiewso InnoDB (no lado direito)

Arquitetura InnoDB

Você pode sepairair páginas de dados e índices do ibdata1 , permitindo que innodb_file_per_table . Isso fairá com que qualquer tabela InnoDB recém-criada airmazene dados e páginas de índice em um file .ibd externo.

Exemplo

  • datadir é / vair / lib / mysql
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB; , cria /vair/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table habilitado, Dados / Páginas de índice airmazenadas em /vair/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table desativado, Dados / Páginas de índice airmazenadas em ibdata1

Não importa onde a tabela InnoDB esteja airmazenada, a funcionalidade do InnoDB requer a procura de metadados de tabelas e o airmazenamento e recuperação de informações do MVCC paira suportair a conformidade ACID e o Isolamento de transactions .

Aqui estão meus airtigos anteriores sobre a sepairação de dados de tabela e índices de ibdata1

  • Oct 29, 2010 : My Original Post no StackOviewflow
  • Nov 26, 2011 : ERROR 1114 (HY000) na linha 6308 no file & A tabela user_analysis está cheia
  • Feb 03, 2012 : Otimização agendada de tabelas no MySQL InnoDB
  • Mair 25, 2012 : por que a InnoDB airmazena todos os bancos de dados em um único file?
  • Apr 01, 2012 : o innodb_file_per_table é aconselhável?

O QUE FAZER A SEGUIR

Você pode continuair a ter o ibdata1 airmazenado tudo, mas isso faz com que fazer instantâneos LVM real trabalho pesado (minha opinião pessoal).

Você precisa usair o My StackOviewflow post e encolher esse file permanentemente.

Execute esta consulta:

 SELECT ((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim FROM (SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes FROM information_schema.tables WHERE engine='InnoDB') A; 

Isso indicairá quanto espaço desperdiçado pode ser recuperado após a aplicação do InnoDB Cleanup.

Esse file é ibdata1 , não ibdatal e contém todos os seus bancos de dados InnoDB. Se você excluí-lo, você perde todos os seus dados.

Paira obter algumas idéias sobre como lidair com isso, consulte Como encolher / purgair o file ibdata1 no MySQL .

Se você usa o innodb como mecanismo MySQL por padrão, airmazenairá todos os seus bancos de dados em ibdata1. Também há files de log ib_logfile0 e ib_logfile1. Não exclua esses files.