Domanda

Quando si modifica il contenuto di una tabella MySQL InnoDB, i seguenti file sul file system sembrano essere coinvolti / modificati:

  • /path/to/mysql/data/[database×/[table lasting.ibd (dovuto a innodb_file_per_table )
  • / path / to / mysql / data / data / ib_logfile0
  • / path / to / mysql / data / data / ib_logfile1
  • / path / to / mysql / data / data / ibdata1

Per ciascuno di questi file:

  1. Quando viene creato il file?
  2. Quando verrà scritto il file?
  3. Da quando verrà letto il file?
  4. Quale sarebbe la conseguenza se il file fosse corrotto o cancellato?
È stato utile?

Soluzione

/path/to/mysql/data/[database]/[table].ibd (due to innodb_file_per_table)

Qui sono archiviati i tuoi dati. Vengono creati quando si creano le tabelle.

/path/to/mysql/data/data/ib_logfile0
/path/to/mysql/data/data/ib_logfile1

Questi sono file di log .

Tutte le modifiche ai dati vengono scritte in sequenza nel file di log , il che consente la registrazione write-ahead (fondamentale per le transazioni)

/path/to/mysql/data/data/ibdata1

Qui sono memorizzati i dati di sistema e i dati UNDO .

Se ibdata non viene trovato, MySQL penserà che il motore InnoDB non sia inizializzato e creerà semplicemente il nuovo ibdata . Lo stesso con file di log .

Se viene eseguita una query su una tabella e il file .ibd non viene trovato, MySQL non riuscirà con questo messaggio:

  

Impossibile trovare la tabella database / table dal dizionario dati interno di InnoDB sebbene sia presente il file .frm per la tabella. Forse hai eliminato e ricreato i file di dati InnoDB ma hai dimenticato di eliminare i corrispondenti file .frm delle tabelle InnoDB , oppure tu   hai spostato i file .frm in un altro database?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top