Tabellen nach Neustart überprüfen

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Tabellen nach Neustart überprüfen

Post by cirox »

Ich glaub ich steh im Wald. Durch einen Stromausfall und anschließenden Neustart wollte ich die Tabellen .MYI überprüfen. Leider gestaltet es sich doch nicht so einfach, wie ich das eigentlich dachte.

Code: Select all

myisamchk /var/lib/mysql/*/*.MYI
Ergebnis:

Code: Select all

-bash: /usr/bin/myisamchk: Die Argumentliste ist zu lang
Ich kann nur myisamchk direkt im myql Verzeichnis des Useres also mit "*.MYI" ausführen.

Wenn ich den Server starte ( Debian) wird doch eh schon alles überprüft?

Code: Select all

#!/bin/bash
#
# This script is executed by "/etc/init.d/mysql" on every (re)start.
# 
# Changes to this file will be preserved when updating the Debian package.
#

source /usr/share/mysql/debian-start.inc.sh

MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
MYCHECK="/usr/bin/mysqlcheck --defaults-file=/etc/mysql/debian.cnf"
MYCHECK_SUBJECT="WARNING: mysqlcheck has found corrupt tables"
MYCHECK_PARAMS="--all-databases --fast --silent"

# Put commands in the background if they should not block the server start.
(
  mycheck;
) &

exit 0
Laut Doku muss ich den MySQL Server vorher stoppen vor der Überprüfung oder

Code: Select all

mysqladmin -p flush-tables

anwenden. Muss man das nur einmal anwenden vor "myisamchk" und gut ist?

Auf jeden Fall komm ich nicht dazu alle Tabellen in einem Rutsch zu überprüfen und mir eventuelle Fehler anzeigen zu lassen. Das kanns irgendwie nicht sein. myisamchk ist doch das was ich verwenden muss. Und Fehler werden doch wohl unübersehbar angezeigt?

Weil hier endet myisamcheck (wie oben beschreiben nur in einem Verzeichnis ohne Wildcard ausführbar) mit:

Code: Select all

....
....
....
---------

Checking MyISAM file: ./webmail_sign.MYI
Data records:       5   Deleted blocks:       1
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check record links

---------
So nichts weiter. Fehler würden doch in der letzten Zeile zusammengefasst dargestellt werden?

Deleted Blocks ist wohl auch nicht weiter wild, sondern besagen nur das da mal irgendwas gelöscht worden ist?
Top

User avatar
Joe User
Project Manager
Project Manager
Posts: 11519
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Tabellen nach Neustart überprüfen

Post by Joe User »

Code: Select all

for i in `find /var/lib/mysql/ -type f -name *.MYI`; do myisamchk ${i}; done
Sollte funktionieren...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Top

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Tabellen nach Neustart überprüfen

Post by oxygen »

Es ist auch unproblematisch den MySQL Server zu starten und dann z.B.

Code: Select all

mysqlcheck --all-databases
zu benutzten.
Top

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Re: Tabellen nach Neustart überprüfen

Post by cirox »

ja genau die beiden Tips waren wonach ich gesucht habe. Vielen Dank.
Top