sql >> Base de Datos >  >> RDS >> Mysql

MAMP PRO falla; MySQL no se iniciará al reiniciar

PRÓLOGO: Esto suena mal, pero asegúrese de leer todo en esta respuesta antes de actuar. No puedes empeorar las cosas tomándote tu tiempo. Lea cada paso y, con suerte, esto será lo suficientemente claro para que pueda seguirlo y hacer que su servidor de base de datos MySQL en MAMP Pro vuelva a funcionar.

Entonces, parece que sus bases de datos InnoDB colapsaron. No la aplicación en sí. La clave está aquí en el registro:

140527 15:06:58 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 791075520
140527 15:06:58  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 791076717
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 8402.
InnoDB: You may have to recover from a backup.

Y parece que estás usando MAMP PRO aquí:

/Library/Application Support/appsolute/MAMP PRO/db/mysql

Entonces, la pregunta es, ¿tiene una copia de seguridad de las bases de datos de MAMP Pro? Ya sea a través de mysqldump ¿o algo mas? ¿Tiene otras bases de datos InnoDB en su instalación de MAMP?

Además, dice que pudo ejecutar mysqldump , pero realmente no es posible que la base de datos se bloquee. Así que supongo que cuando ejecutó mysqldump esa fue otra instalación separada de MySQL en su sistema. Los binarios de MySQL como mysqldump en MAMP o MAMP Pro no son lo mismo que el mysqldump de todo el sistema . Son dos instalaciones 100% diferentes. Puede comprobar qué mysqldump se está utilizando escribiendo este comando:

which mysqldump

Para ver la ruta completa de lo que crees que estabas usando. La instalación MAMP de mysqldump —y otros binarios relacionados— se encuentra aquí:

/Applications/MAMP/Library/bin/

Y para ejecutarlo directamente sin modificar su $PATH El valor (otra cosa) es ejecutarlo así:

/Applications/MAMP/Library/bin/mysqldump

POR FAVOR LEA CUIDADOSAMENTE: Tenga en cuenta que el consejo que le doy a continuación es presentar todas las formas en que abordaría una situación como esta. Si la base de datos de InnoDB no es importante, solo haga mi primera sugerencia de desechar los archivos de base de datos específicos de InnoDB. Si tiene un mysqldump copia de seguridad, haga lo mismo pero recupere el mysqldump copia de seguridad.

Además, InnoDB no un motor de almacenamiento predeterminado. Tienes que salir de tu camino para configurar eso. El valor predeterminado es MyISAM. Cualquier base de datos nueva creada en MySQL será MyISAM. Así que esto te ayudará. Debe ponerse su límite de pensamiento y averiguar qué bases de datos tienen configurados los motores de almacenamiento InnoDB. Si dice que tiene 25 pero solo 1 tiene InnoDB, solución fácil. Pero también si tiene 25 bases de datos, debe adquirir el hábito de hacer mysqldump regulares copias de seguridad Si tuviera copias de seguridad, esto sería un dolor de cabeza, pero una solución sencilla.

UNA OPCIÓN:elimine las cosas dañadas de InnoDB y recupérese de un mysqldump copia de seguridad.

Lo primero que haría si fuera usted es hacer una copia de seguridad de mysql directorio en /Library/Application Support/appsolute/MAMP PRO/db/ por lo que al menos puede tener una copia de seguridad de los archivos corruptos por si acaso.

Luego eliminaría los siguientes archivos:

/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile0
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile1
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ibdata1

Esos son archivos específicos de InnoDB. Elimínelos y luego intente iniciar MAMP nuevamente. Debería aparecer. Pero cualquier base de datos InnoDB en MAMP estará en algún estado "zombie". Debe eliminar esas bases de datos y volver a crear desde la copia de seguridad. O desde cero si puedes.

OTRA OPCIÓN:intente volver a poner en funcionamiento el servidor MySQL con innodb_force_recovery .

Ahora, en caso de que necesite recuperar esa base de datos, puede ejecutar un intento de establecer un innodb_force_recovery como se describe aquí.

Para MAMP Pro, parece que puede editar su archivo de configuración de MySQL según estas instrucciones:

  1. Inicie MAMP Pro.
  2. Detenga el servidor MAMP Pro si se está ejecutando.
  3. Seleccione Archivo -> Editar plantilla -> MySQL my.cnf
  4. Aparece una ventana de edición.
  5. Si aparece un mensaje de advertencia, confirme con Aceptar.
  6. Busque la sección "[mysqld]"
  7. Debajo de la última línea de esta sección, agregue esta línea:innodb_force_recovery = 1

Y como explica la documentación de MySQL , esto es estrictamente para poner en funcionamiento la base de datos para que pueda hacer una copia de seguridad a través de mysqldump :

Ahora hay alrededor de 6 valores diferentes para innodb_force_recovery pero realmente solo deberías intentarlo con 1 por ahora. Si desea probar cada uno de los 6, aquí hay un desglose:

Si tiene la base de datos en funcionamiento y luego puede hacer un mysqldump entonces felicidades! ¡Estás limpio! El mejor siguiente paso es

  1. Detener el servidor de base de datos MySQL
  2. Eliminar innodb_force_recovery opción de la configuración de MySQL para que el servidor de la base de datos pueda operar normalmente.
  3. Reinicie el servidor de la base de datos MySQL.
  4. Elimine la base de datos MySQL corrupta del servidor (¡No elimine el archivo de volcado! ¡Ese es su respaldo!)
  5. Cree una nueva base de datos que desee recuperar.
  6. Importar el mysqldump copia de seguridad en la nueva base de datos.

Y deberías terminar.