web-dev-qa-db-fra.com

Quels sont exactement les fichiers iblog dans mysql

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.

15
Uday

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 nouvelle table InnoDB à stocker des données et des pages d'index dans un fichier externe .ibd.

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 [~ # ~] mvcc [~ # ~] informations à prendre en charge Conformité ACID et Isolement de transaction .

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

fichiers iblog (a.k.a. ib_logfile0, ib_logfile1)

Si vous voulez savoir à quoi servent les ib_logfile0 Et ib_logfile1, Ce 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 à travers ib_logfile0 Et ib_logfile1 Pour vérifier les modifications de données qui n'ont pas été publiées dans le tampon de double écriture dans ibdata1. Il rejouera (refait) ces modifications. Une fois qu'ils sont relus et stockés, mysqld est prêt pour de nouvelles connexions DB.

17
RolandoMySQLDBA