mercoledì 31 agosto 2011

Mysql Table Repair -2 on Linux Centos

Ritorno a scrivere sulla riparazione della tabella mysql perchè l'operazione non è stata così semplice come sembrava.

Il server si è bloccato per mancanza di spazio quindi il primo problema che ho dovuto risovlere è stato quello di ampliare il filesystem ma per politiche aziendali non volevo allocare tutto lo spazio necessario, circa 40GB !

Pertanto essendo una macchina virtualizzata ho preferito fare un clone della macchina, aggiungere un secondo disco che ho attivato con:
- fdisk /dev/sdb: creata la partizione con n e salvato con w
- mkfs -t ext3 /dev/sdb1: creato il filsystem
- montare il disco in una nuova direcotry chiamata /safe (mount -t ext3 /dev/sdb1 /mnt/safe)

Avendo lo spazio a disposizione ho voluto crearmi un ambiente mysql nuovo e completo quindi ho copiato tutta la directory mysql in un'altra directory creata in /safe.

Riavviando il servizio non dovrebbero esserci problemi di sorta, eventualmente verificare i log.

L'interessante è che per far funzionare mysql è sufficente modificare il file /etc/my.cnf con i nuovi percorsi.
Consiglio di fare una copia perchè il file tornerà quello originale.

Al primo tentativo di login mysql segnalerà un problema al socket basterà utilizzare il parametro --socket=/path/to/socket

Una volta fatto ripartire il servizio e aperto il db corretto ho utilizzato il comando:
REPAIR NO_WRITE_TO_BINLOG TABLE xxx;
riferimento: http://www.roseindia.net/mysql/mysql5/table-maintenance-statements.shtml


Dopo un bel po' di tempo il repair è andato a buon fine, segnalando 92 milioni di righe disponibili circa .

Verificato che era possibile fare una select sulla tabella, ho stoppato il servizio mysql copiati i file della tabella nella posizione originale, restorato il file my.cnf nella posizione originale e fatto riavviare il servizio.
Riverificato che il collegamento e che la select funzionasse avevo a disposizione la nuova tabella pronta.

Ho spento il server, collegato il disco alla vecchia VM (quella originale) e poi copiato i files della tabella nella locazione originale.
Così facendo ho liberato circa 15 GB di spazio dal server rendendolo più snello.

Per non trovarmi più nella situazion di fault ho attivato snmp e girato i trap verso il nostro server di monitoraggio.

Detto così sembra semplice ma non è proprio stato così....

Nessun commento:

Posta un commento