MySQL servicing
Giuditta!
giuditta a yoda.ing.unibs.it
Ven 10 Feb 2006 09:45:35 UTC
| -----Original Message-----
| From: owner-lug a lugbs.linux.it
| [mailto:owner-lug a lugbs.linux.it] On Behalf Of Luca Coianiz
| Sent: Tuesday, February 07, 2006 8:18 PM
| To: lugbs
| Subject: MySQL servicing
|
|
| Durante uno dei miei "giri panoramici" per le directory di
| sistema ho notato che /var/lib/mysql contiene una marea di
| file home-bin.001 ... nnn che mi sembrano temporanei di MySQL.
|
| Solo che, a differenza dei mysqld.log, questi non vengono
| mai cancellati o "backuppati" (diciamo almeno gzippati) e ne
| ho c.ca 400 per la modica cifra di 89 MB allocati. =8-O (in
| genere è tutta robetta da pochi KB, ma ce n'è anche da 10 MB)
|
| Domande, prima di immergermi nella "grande rete" a cercar di
| "pescare"
| qualche risposta, se qualcuno qui lo sa:
|
| 1) sono veramente temporanei e li posso cancellare senza
| problemi o scasso le storie a MySQL intervenendo "da fuori"
| sui suoi file? (sicuramente NON sono DB/tabelle comunque).
| Eventualmente: come faccio a dirgli "da dentro"
| di eliminarli?
|
| 2) posso cancellarli così a freddo (rm *.nnn) oppure è
| meglio chiudere MySQL prima di farlo?
|
| 3) li si può cancellare tutti o è necessario tenere l'ultimo?
Contengono il log di tutte le query che modificano il database (insert,
update, create..).
Sono indispensabili per gestire dei DBMS slave di backup ed utili per
risalire a query fatte se il log testuale è disabilitato.
In ogni caso possono essere tranquillamente cancellati tranne l'ultimo che è
in uso.
Io ogni mese li cancello tutti tranne l'ultimo e poi forzo la rotazione su
un nuovo file, in questo modo:
- libero spazio
- tengo l'ultimo mese di queries
- evito che si creino files enormi dato che il file "-bin" normalmente
rimane sempre lo stesso fino a quando non viene riavviato il servizio.
Per fare tutto ciò senza riavviare il servizio (sui server in produzione,
dall'"interno" come dici tu) eseguo ogni mese il seguente script:
<<
#prendo il numero del log corrente
MASTER=`mysql --exec='SHOW MASTER STATUS\G' | grep 'File:' | awk '{ print $2
}'`
#cancello tutti i logs escluso il corrente
mysql -u root --batch --exec="PURGE MASTER LOGS TO '$MASTER'"
#cambio file di log
mysqladmin flush-logs
>>
Funziona su 3.23< versione < 4.1 ma credo anche oltre.
| Thanks in advance,
|
| LC
Prego.
Ciao.
MB
Maggiori informazioni sulla lista
Lug
|