MySQL Administration
Manchmal will man alle MySQL Tabellen in einem Schwung reparieren oder optimieren. Mit phpMyAdmin nur ein paar Klicks, sofern es nur eine Datenbank betrifft. Hat man es aber auch noch mit dutzenden von Datenbanken zu tun, wird's haarig. Und falls es sich auch noch um zum Teil sehr große Datenbanken handelt, bleibe ich doch lieber bei der Kommandozeile, da HTTP Timeouts bei solchen Aktionen immer eine fahlen Nachgeschmack haben.
Zu diesem Zwecke, hier ein kleiner Bash one-liner:
for DB in $(mysql -B --skip-column-names -e 'SHOW DATABASES;'); do \
echo "*** $DB ***"; \
for T in $(mysql -B --skip-column-names -e 'SHOW TABLES;' $DB); do \
echo -n .; \
mysql >/dev/null -B -e "REPAIR TABLE $T" $DB; \
done; \
echo; \
done
REPAIR TABLE kann man auch durch OPTIMIZE TABLE oder sonst was ersetzen.
Wie gesagt, eigentlich ein Einzeiler — wenn auch recht lang —, die Umbrüche dienen hier nur der Lesbarkeit. Falls man bessere Nerven hat als ich, kann man auch die echo Zeilen weglassen.
Vorausgesetzt wird, daß der aktuelle User ohne explizite -u und -p Optionen Zugriff auf alle Datenbanken hat, mit allen nötigen Rechten.
Dies erreicht man mit einem entsprechenden Eintrag in $HOME/.my.cnf, falls nicht schon geschehen:
[mysql] user=root password=geheim
chmod 0600 $HOME/.my.cnf nicht vergessen, damit das Passwort in der Familie bleibt.
- Geschrieben am 08 June 2007 um 12:50
Du ließt das Weblog von Benjamin Niemann.
Navigation:
Zuletzt geschrieben:
- MySQL Administration
- Lebenszeichen
- Wer fällt auf sowas 'rein?
- Spamming mit Anti-Spam Obfuskierung
- Erste Alpha Version von Valdente