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ì....

lunedì 29 agosto 2011

Patrizia

Oggi è scomparsa un'amica, Patrizia, se l'è portata via il vento, così rapidamente.

Resterai nella nostra mente.

Mysql Table Repair -1

E’ parecchio tempo che non scrivo perché ho parecchio da fare ma oggi voglio mettere su “carta” quest’appunto che può sempre essere utile.
Tanto per essere chiari parliamo di un server linux centos con un applicazione di centralizzazione log sulla quale ci sono apache e mysql.
Una delle tabelle di dell’applicazione si è corrotta quindi sto eseguendo queste operazioni:
- Collegato al db eseguo CHECK TABLE ;
- Mi scollego ed eseguo mysqlcheck --auto-repair Syslog SystemEvents;
Ed ecco l’output:
warning : Table is marked as crashed
error : Size of datafile is: 42869452800 Should be: 42869453072
error : Corrupt

Repairing tables