Quels sont exactement les fichiers iblog dans mysql


15

Je voudrais comprendre ces fichiers ibdata car ils jouent un rôle vital dans la procédure de récupération après incident. Je n'ai pas pu trouver de ressources appropriées sur le Web pour cela.

Réponses:


17

ibdata1

Le fichier ibdata1 est l'espace disque logique système pour l'infrastructure InnoDB.

Il contient plusieurs classes d'informations vitales pour InnoDB

  • Pages de données de table
  • Pages d'index de table
  • Dictionnaire de données
  • Données de contrôle MVCC
    • Annuler l'espace
    • Segments de restauration
  • Double tampon d'écriture (pages écrites en arrière-plan pour éviter la mise en cache du système d'exploitation)
  • Insérer un tampon (modifications apportées aux index secondaires)

Cliquez ici pour voir une représentation picturale

Vous pouvez séparer les pages de données et d'index d'ibdata1 en activant innodb_file_per_table . Cela entraînera toute table InnoDB nouvellement créée à stocker des données et des pages d'index dans un .ibdfichier externe .

Exemple

  • datadir est / var / lib / mysql
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;, crée /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table activé, pages de données / index stockées dans /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table désactivé, pages de données / index stockées dans ibdata1

Peu importe où la table InnoDB est stockée, la fonctionnalité d'InnoDB nécessite la recherche de métadonnées de table et le stockage et la récupération des informations MVCC pour prendre en charge la conformité ACID et l' isolement des transactions .

Voici mes articles précédents sur la séparation des données de table et des index d'ibdata1

fichiers iblog (aka ib_logfile0, ib_logfile1)

Si vous voulez savoir à quoi cela sert ib_logfile0et ib_logfile1ce sont les journaux de rétablissement InnoDB. Ils ne devraient jamais être effacés ou redimensionnés jusqu'à ce qu'un arrêt normal complet de mysqld ait eu lieu . Si mysqld tombe en panne, démarrez simplement mysqld. Il lira ib_logfile0et ib_logfile1vérifiera toutes les modifications de données qui n'ont pas été publiées dans le tampon d'écriture double ibdata1. Il va rejouer (refaire) ces changements. Une fois qu'ils sont relus et stockés, mysqld est prêt pour de nouvelles connexions DB.


Comment l'espace sera-t-il conservé dans ces fichiers journaux ...? Je veux dire ... "pour les nouvelles transactions innodb, comment les mêmes fichiers journaux seront-ils utilisés s'ils sont complètement remplis ..."
Uday

Mon commentaire précédent concerne les fichiers ib_log ....
Uday

1
@ Uday L'espace ne sera pas conservé sur les fichiers iblog tant que le tampon de journal ne sera pas vide. Il s'agit d'un processus dynamique, où l'espace journal est occupé et libéré en fonction des modifications de transaction bloquées enregistrées dans le tampon de journal. Ces fichiers journaux sont complètement occupés, chaque fois que vous effectuez d'énormes chargements de données, ce qui entraîne des erreurs Innodb indiquant "InnoDB: qui dépasse la capacité du groupe de journaux"., Ce qui signifie que la taille du fichier journal doit être plus grande pour faire des choses. J'espère que mon explication a dissipé votre doute.
Gopinath

innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibdet innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1devrait être vice versa, non?
rabudde

1
@rabudde C'est corrigé maintenant. Merci encore !!!
RolandoMySQLDBA
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.