O que exatamente são os arquivos iblog no mysql

15

Gostaria de entender esses arquivos ibdata, pois eles desempenham um papel vital no procedimento de recuperação de falhas. Não consegui encontrar recursos adequados na web para isso.

Uday
fonte

Respostas:

17

ibdata1

O arquivo ibdata1 é o espaço de tabela do sistema para a infraestrutura do InnoDB.

Ele contém várias classes de informações vitais para o InnoDB

  • Páginas de dados da tabela
  • Páginas de índice da tabela
  • Dicionário de dados
  • Dados de controle do MVCC
    • Desfazer espaço
    • Segmentos de reversão
  • Buffer de gravação dupla (páginas gravadas em segundo plano para evitar o cache do SO)
  • Inserir buffer (alterações nos índices secundários)

Clique aqui para ver uma representação pictórica

Você pode separar as páginas de dados e índice do ibdata1 ativando innodb_file_per_table . Isso fará com que qualquer tabela InnoDB recém-criada armazene dados e páginas de índice em um .ibdarquivo externo .

Exemplo

  • datadir é / var / lib / mysql
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;cria /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table ativado, páginas de dados / índice armazenadas em /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table desativado, páginas de dados / índice armazenadas no ibdata1

Não importa onde a tabela do InnoDB esteja armazenada, a funcionalidade do InnoDB exige a busca de metadados da tabela e o armazenamento e recuperação de informações do MVCC para dar suporte à conformidade com ACID e ao isolamento da transação .

Aqui estão meus artigos anteriores sobre a separação de dados e índices de tabela do ibdata1

arquivos iblog (aka ib_logfile0, ib_logfile1)

Se você deseja saber para que servem ib_logfile0e ib_logfile1são, eles são os logs de refazer do InnoDB. Eles nunca devem ser apagados ou redimensionados até que um desligamento normal do mysqld ocorra . Se o mysqld travar, basta iniciar o mysqld. Ele lerá ib_logfile0e ib_logfile1verificará quaisquer alterações de dados que não foram postadas no buffer de gravação dupla ibdata1. Ele repetirá (refará) essas alterações. Uma vez que eles são reproduzidos e armazenados, o mysqld fica pronto para novas conexões do banco de dados.

RolandoMySQLDBA
fonte
Como o espaço será retido nesses arquivos de log ...? Quero dizer que perguntar ... "para novas transações InnoDB como os mesmos arquivos de log ser usado se estes são preenchidos completamente ...."
Uday
Meu comentário anterior é sobre arquivos ib_log ....
Uday
1
@ Uday O espaço não será retido nos arquivos iblog até que o logbuffer fique vazio. É um processo dinâmico, em que o espaço de log é ocupado e liberado com base nas alterações de transação paralisadas registradas no buffer de log. Esses arquivos de log são ocupados completamente, sempre que você realiza grandes carregamentos de dados, o que leva a erros do Innodb que indicam "InnoDB: o que excede a capacidade do grupo de logs"., O que significa que o tamanho do arquivo de log deve ser maior para fazer as coisas. Espero que minha explicação tenha esclarecido sua dúvida.
Gopinath
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibde innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1deveria ser vice-versa, não deveria?
rabudde 21/09/16
1
@rabudde Está consertado agora. Mais uma vez obrigado !!!
RolandoMySQLDBA