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.
Le fichier ibdata1 est l'espace disque logique système pour l'infrastructure InnoDB.
Il contient plusieurs classes d'informations vitales pour InnoDB
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 .ibd
fichier externe .
Exemple
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, crée /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
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
Oct 29, 2010
: Mon message d'origine dans StackOverflowNov 26, 2011
: ERREUR 1114 (HY000) à la ligne 6308 du fichier & La table user_analysis est pleineFeb 03, 2012
: Optimisation programmée des tables dans MySQL InnoDBMar 25, 2012
: Pourquoi InnoDB stocke-t-il toutes les bases de données dans un seul fichier?Apr 01, 2012
: Est innodb_file_per_table conseillé?ib_logfile0
, ib_logfile1
)Si vous voulez savoir à quoi cela sert 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 ib_logfile0
et ib_logfile1
vé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.
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibd
etinnodb_file_per_table enbled, Data/Index Pages Stored in ibdata1
devrait être vice versa, non?