SMsoft – informatica e dintorni

La dimensione del file ibdata di MySQL non diminuisce dopo cancellazione

Probabilmente vi sarà capitato di controllare la dimensione dei files ibdata nella cartella /var/lib/mysql e vederli crescere durante il popolamento di database InnoDB. Tutto normale, perché i dati dei database impostati con questo formato vengono salvati, di default, in questi files.
Se vi è capitato di cancellare anche dati dal database, avrete notato che la dimensione dei files non viene ridotta!?! Come mai?
Gli sviluppatori di MySQL assicurano che non è un BUG ma una scelta sistemistica che onestamente ha senso se il database ha cambiamenti di dimensione non esagerati, ma nel caso si debba cancellare un database molto grande che non viene sostituito da un altro con dimensioni analoghe, lo spazio su disco resterà occupato senza essere utilizzato…

A quanto pare l’unica soluzione al momento è attivare l’opzione innodb_file_per_table sotto la sezione [mysqld] del file di configurazione my.cnf, che praticamente crea dei files .idb per ogni tabella nella cartella del database e che il server MySQL provvederà a cancellare nel caso il database venga rimosso con il classico “DROP DATABASE ….”.
ATTENZIONE: Ci sono delle procedure più veloci, ma onestamente la seguente mi sembra quella più sicura per non perdere i dati.

Bisogna quindi procedere come segue, avendo i privilegi di root:

Creare il backup di tutti i database con il seguente comando:

Inserire l’opzione innodb_file_per_table nel file my.cnf (su Debian si trova in /etc/mysql/my.cnf ) per avere qualcosa del tipo:

Fermare il servizio MySQL e rimuovere i files nella cartella di MySQL (su Debian /var/lib/mysql/ ma potrebbe variare per altre distribuzioni)

Installare i database di default di MySQL

Modificare il proprietario dei files appena creati in modo che l’utente mysql possa accedervi senza limitazioni

Avviare MySQL e poi importare il backup effettuato prima

da notare che non viene richiesta la password di connessione, perché con mysql_install_db l’utente root viene impostato senza password
Riavviare infine MySQL

enjoy




Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario :-)
*

Commenti

Page optimized by WP Minify WordPress Plugin