La documentazione MySQL per REPAIR TABLE afferma cheCosa causerebbe la perdita di dati durante una REPAIR TABLE in MySQL usando MyISAM?
E 'meglio fare un backup di una tabella prima di eseguire una riparazione tavolo funzionamento; in alcune circostanze l'operazione potrebbe causare la perdita di dati. Possibili cause includono ma non sono limitate agli errori del file system.
Mi piacerebbe sapere se ci sono altre cause di perdita di dati oltre agli errori del file system. Qualcuno ha visto accadere questo in natura? Quanto è probabile che la riparazione perderà i dati se non ci sono errori del file system?
La mia situazione specifica è la seguente. Ho il server Sun T5120 con Solaris 10 (SPARC) e sto usando MySQL 5.1.30. Ho una tabella che utilizza il motore MyISAM che a volte si corrompe. Alcune volte che la tabella è stata danneggiata sono state dovute a interruzioni di alimentazione impreviste nel nostro sistema di sviluppo che non aveva un UPS. Non sono sicuro che tutta la corruzione sia dovuta a interruzioni di corrente, quindi potrebbero esserci ulteriori motivi per cui ciò sta accadendo. Quali le cause elencate here.
Vorrei installare una soluzione di riparazione automatica nel caso in cui questi sospetti "ulteriori motivi" si verificano nel sistema di produzione o l'UPS di produzione non funziona. Potrei impostare un cron job per eseguire mysqlcheck --auto-recover
come suggerito in this answer, oppure potrei modificare il mio processo che si sta inserendo in quella tabella per eseguire immediatamente il comando REPAIR TABLE EXTENDED
quando rileva la corruzione. Tuttavia, entrambi questi approcci utilizzano REPAIR TABLE
e sono quindi suscettibili alla perdita di dati.
Potrei eseguire il backup della tabella prima di tentare la riparazione, come suggerisce la documentazione, ma la tabella è piuttosto grande e non sono sicuro che avrò spazio disponibile per il backup. Ho fatto qualche ricerca, ma non ho trovato alcuna spiegazione del perché REPAIR TABLE
causerebbe la perdita di dati oltre a quanto menzionato nella documentazione. È quindi probabile che la riparazione perderà i dati quando si dispone di un file system audio o la documentazione è semplicemente cauta?
Qualsiasi risposta che si ottiene oggi potrebbe cessare di essere vera nel prossimo futuro. –
Grazie per l'avviso Heath, ma non mi aspetto di aggiornare la nostra installazione di MySQL dalla versione corrente. Le cose funzionano come sono e la gestione è MOLTO resistente a qualsiasi cambiamento. –