2009-05-27 24 views
5

Ho un DB mysql configurato con il motore di archiviazione innoDB. Ho abbandonato il database (drop database <dbname>) ma lo spazio su disco non è stato liberato.mysql: Come liberare spazio (innodb)

A /var/lib/mysql ci sono alcuni file "grandi" chiamati ib_logfile0, ib_logfile1 e ibdata1 in cui l'ultimo è davvero grande. Premetto che questi file sono in effetti il ​​DB originale.

Come posso sapere se riesco a eliminarli. O una domanda migliore è come rilasciare un database in modo che lo spazio su disco sia recuperato.

Chiarimento
voglio eliminare il database completo e liberare lo spazio su disco. Non voglio eseguire alcun ripristino.

Grazie in anticipo.

+0

Questa è una domanda per serverfault.com – soulmerge

risposta

7

Sfortunatamente non c'è modo di ridurre questi file una volta che lo spazio è stato allocato. MySQL tuttavia riutilizzerà lo spazio quando vengono aggiunti nuovi dati, ma il file non si restringerà.

Per ridurre le dimensioni è necessario scaricare i database e ripristinarli di nuovo.

È inoltre possibile effettuare le seguenti operazioni:

Impostare innodb_file_per_table nel file di configurazione, che creerà un file separato per ogni tabella. Ciò consentirà quindi di eliminare questi file una volta che un database viene eliminato e consente inoltre di utilizzare il comando OPTIMIZE TABLE per ricostruire i file ibd se si riducono i dati in una determinata tabella.

+0

Grazie per la risposta. BTW, quali sono gli svantaggi della creazione di un file separato per tabella (se presente)? Perdo le prestazioni? – Luixv

+0

Non riesco a pensare ad un inconveniente nell'usare l'opzione innodb_file_per_table in cima alla mia testa, a parte il fatto che creerà molti più file che potrebbero rendere leggermente più difficile la loro gestione. Ma l'utilizzo dell'opzione offre sicuramente alcuni vantaggi, come la minore frammentazione, la capacità di ridurre i singoli file di tabella e se si dispone di un file system con un limite di 2 GB (molto raro, in questi giorni) il limite ora si applica su una base per tabella di tutta la cosa. –

+0

Grazie per la tua risposta. Ti metto a rispondere come 'accettato' – Luixv

0

Una soluzione è scaricare e quindi ripristinare.

Problemi correlati