Che cos'è il file ibdata1 nella mia directory / var / lib / mysql?

Accedendo al mio pannello di controllo Webmin, ho notato che quasi tutto il mio spazio su disco è pieno. Ho cercato i dieci file / directory più grandi del mio sistema e ho scoperto che un file chiamato ibdata1 sta occupando circa 94 GB di spazio. Esso risiede nella mia directory / var / lib / mysql.

Cosa fa ibdata1? Sono sicuro di rimuoverlo? La mia ipotesi è che sia un discarico di qualche tipo, ma è solo una indovinata ipotesi.

  • Qualcosa mangia tutta la memory sul mio server, ma NON è la cache di fs
  • Scopri che process di apache di utilizzo della CPU è in realtà efficace?
  • Ubuntu "Nessun spazio rimasto sul dispositivo" per / home, df mostra 100% pieno, ds mostra molto, molto less
  • Come posso cancellare automaticamente i vecchi file log di errore apache?
  • SSH Indurimento non funziona come previsto
  • Per impostare locale in Ubuntu, cosa significa la variabile di ambiente LANGUAGE?
  • Esegui fail2ban senza divieto
  • Esegui gli script nel login utente, ma prima della session (Linux)?
  • 3 Solutions collect form web for “Che cos'è il file ibdata1 nella mia directory / var / lib / mysql?”

    Il file ibdata1 è il ibdata1 sistema per l'infrastruttura InnoDB.

    Contiene diverse classi per informazioni vitali per InnoDB

    • Pagine di dati di tabella
    • Pagine di indice di tabella
    • Dizionario dati
    • Dati di controllo MVCC
      • Annulla lo spazio
      • Segmenti di rollback
    • Doppio buffer di scrittura (pagine scritte in background per evitare la memorizzazione del sistema operativo)
    • Buffer di inserimento (modifiche agli indici secondari)

    Si prega di notare il posto di ibdata1 nell'InnoDB Universe (sul lato destro)

    InnoDB Architettura

    È ansible separare le pagine di dati e indice da ibdata1 abilitando innodb_file_per_table . Ciò causerà qualsiasi tabella InnoDB appena creata per memorizzare le pagine di dati e indice in un file .ibd esterno.

    Esempio

    • datadir è / var / lib / mysql
    • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB; , crea /var/lib/mysql/mydb/mytable.frm
      • innodb_file_per_table abilitato, Pagine di dati / indici memorizzati in /var/lib/mysql/mydb/mytable.ibd
      • innodb_file_per_table distriggersto, Pagine di dati / indici memorizzati in ibdata1

    Non import where la tabella InnoDB è memorizzata, la funzionalità di InnoDB richiede la ricerca di metadati di tabella e la memorizzazione e il recupero di informazioni MVCC per supportre la conformità ACID e la Transaction Isolation .

    Ecco i miei articoli precedenti sul separare i dati della tabella e gli indici da ibdata1

    • Oct 29, 2010 : Il mio post originale in StackOverflow
    • Nov 26, 2011 : ERRORE 1114 (HY000) alla row 6308 in file & La tabella user_analysis è piena
    • Feb 03, 2012 : Ottimizzazione pianificata di tabelle in MySQL InnoDB
    • Mar 25, 2012 : Perché InnoDB memorizza tutti i database in un unico file?
    • Apr 01, 2012 : è innodb_file_per_table consigliabile?

    COSA FARE DOPO

    È ansible continuare ad avere ibdata1 memorizzati tutto, ma questo rende le istantanee LVM una vera fatica (il mio parere personale).

    È necessario utilizzare il mio tree StackOverflow e ridurre il file in modo permanente.

    Esegui questa domanda:

     SELECT ((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim FROM (SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes FROM information_schema.tables WHERE engine='InnoDB') A; 

    Ciò spiega come lo spazio sprecato può essere recuperato dopo l'applicazione del Cleanup InnoDB.

    Questo file è ibdata1 , non ibdatal e contiene tutti i database InnoDB. Se lo elimina, perdi tutti i tuoi dati.

    Per alcune idee su come gestirlo , vedere Come ridurre / eliminare il file ibdata1 in MySQL .

    Se usi innodb come motore MySQL per impostazione predefinita, memorizzerai tutti i database in ibdata1. Ci sono anche file di log ib_logfile0 e ib_logfile1. Non eliminare questi file.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.