Copiado de http://www.ignside.net/man/mysql/desastre.php
Primero esto:
check table nombre_tabla
repair table nombre_tabla
Y si no funciona entonces esto:
myisamchk
isamchk
Si has perdido la contraseña que usas como root, es decir, para administrar My SQL?, puedes establecer otra, usando el mismo ordenador donde físicamente está instalado el daemon:
Lo primero que has de ver es si efectivamente se ha caido el servidor o si es el programa cliente el que falla. mysql>mysqladmin -u root -p version servirá para ver si el servidor esta en funcionamiento (un simple ctrl-alt-supr tambien te sirve para ver si mysqld esta en la lista de procesos activos).
Si se ha caido el server, prueba a ver si encuentras pistas en el archivo tu_host.err, que encontrarás en la carpeta c:mysqldata. En este log de errores se guardan los arranques y cierres del server, y otra información util.
Tambien puedes crear un log general iniciando mysqld con la opcion --log[=archivo]. Por ejemplo:
C:mysqlbin>mysqld --log=log_general.log creará en la carpeta data el archivo log_general.log. Este es un ejemplo de su contenido:
C:MYSQLBINMYSQLD.EXE, Version: 4.0.12-max-debug-log, started with:
Tcp port: 3306 Unix socket: My SQL?
Time Id Command Argument
030504 16:07:21 1 Connect Acceso negado para usuario: 'ODBC@127.0.0.1' (Usando clave: SI)
030504 16:07:40 2 Connect root@127.0.0.1 on
030504 16:07:47 2 Query show databases
030504 16:07:52 3 Connect root@127.0.0.1 on
El servidor debe siempre cerrarse de forma adecuada, bien con winmysqladmin desde la barra del reloj de tu ordenador, o bien desde la ventana msdos con el comando: c:mysqlbin>mysqladmin -u root -p shutdown
Cerrar el servidor de otra forma puede corromper los datos de las tablas y ser fuente de problemas.
Con mysqldump puedes obtener copias de la estructura y datos de las tablas. Con la copia de la estructura podras recrear tus tablas (vacias de datos) mientras que con la copia completa de estructura y datos obtendrás una copia espejo de tu base de datos.
Este es tambien el método logico si lo que quieres es pasar tu base de datos de un servidor a otro, por ejemplo de tu servidor local de pruebas al servidor en la red.
Veamos algunos ejemplos:
Como no hemos indicado ruta ninguna, los archivos resultantes apareceran en bin.
Para cargar el respaldo de nuevo en el server, simplemente: el proceso a la inversa:
C:mysqlbin>mysql -u root -pcontraseña base_a_cargar < copia_respaldo.sql.