Solución de daños en bases de datos en Azure Database for MySQL: servidor flexible

SE APLICA A: Azure Database for MySQL (servidor único) Azure Database for MySQL (servidor flexible)

Importante

El servidor único de Azure Database for MySQL está en proceso de retirada. Es muy recomendable actualizar al servidor flexible de Azure Database for MySQL. Para obtener más información sobre la migración al servidor flexible de Azure Database for MySQL, consulte ¿Qué sucede con el servidor único de Azure Database for MySQL?

Los daños en las bases de datos pueden provocar tiempos de inactividad en su aplicación. También es fundamental resolver los problemas de daños a tiempo para evitar la pérdida de datos. Cuando se produzcan daños en una base de datos, en los registros del servidor verá este error: InnoDB: Database page corruption on disk or a failed.

En este artículo, aprenderá a resolver problemas de daños en bases de datos o en tablas. El servidor flexible de Azure Database for MySQL usa el motor InnoDB. Incluye operaciones de reparación y comprobación de daños automatizadas. InnoDB comprueba si hay páginas dañadas mediante la ejecución de sumas de comprobación en cada página que lee. Si encuentra una discrepancia de suma de comprobación, detendrá automáticamente la instancia de servidor flexible de Azure Database for MySQL.

Pruebe las siguientes opciones para mitigar rápidamente los problemas de daños en las bases de datos.

Reinicio del servidor de MySQL

Normalmente, observará que una base de datos o una tabla están dañadas cuando la aplicación accede a la tabla o la base de datos. InnoDB incluye un mecanismo de recuperación tras un bloqueo que puede resolver la mayoría de los problemas al reiniciar el servidor. Por lo tanto, el reinicio del servidor debería ayudar a que este se recuperase de un bloqueo que hizo que la base de datos estuviera en mal estado.

Uso de los métodos de copia de seguridad y restauración

Se recomienda resolver los problemas de daños usando un método de seguridad y restauración. Este método implica lo siguiente:

  1. Acceder a la tabla dañada.
  2. Usar la utilidad mysqldump para crear una copia de seguridad lógica de la tabla. La copia de seguridad conservará la estructura de la tabla y los datos que contiene.
  3. Volver a cargar la tabla en la base de datos.

Copia de seguridad de las tablas o bases de datos

Importante

Cree un archivo de copia de seguridad desde la línea de comandos mediante mysqldump. Use este comando:

$ mysqldump [--ssl-cert=/path/to/pem] -h [host] -u [uname] -p[pass] [dbname] > [backupfile.sql]

Descripciones de parámetro:

  • [ssl-cert=/path/to/pem]: la ruta de acceso al certificado SSL. Descargue el certificado SSL en el equipo cliente y establezca la ruta de acceso en el comando. No use este parámetro si SSL está deshabilitado.
  • [host]: la instancia de servidor flexible de Azure Database for MySQL.
  • [uname]: su nombre de usuario administrador del servidor.
  • [pass]: la contraseña del usuario administrador.
  • [dbname]: Nombre de la base de datos.
  • [backupfile.sql]: el nombre de archivo de la copia de seguridad de la base de datos.

Importante

  • Para el servidor único de Azure Database for MySQL, use el formato admin-user@servername para reemplazar myserveradmin en los siguientes comandos.
  • Para el servidor flexible de Azure Database for MySQL, use el formato admin-user para reemplazar myserveradmin en los siguientes comandos.

Si solo están dañadas ciertas tablas, seleccione las tablas específicas de la base de datos para las que quiere realizar una copia de seguridad:

$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb table1 table2 > testdb_tables_backup.sql

Para hacer una copia de seguridad de una o varias bases de datos, use el conmutador --database y enumere los nombres de las bases de datos en una lista separados por espacios:

$ mysqldump --ssl-cert=</path/to/pem>  -h mydemoserver.mysql.database.azure.com -u myserveradmin -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Restauración de tablas o bases de datos

En los pasos siguientes se muestra cómo restaurar bases de datos o tablas. Después de crear el archivo de copia de seguridad, puede restaurar las tablas o bases de datos mediante la utilidad mysql. Ejecute este comando:

mysql  --ssl-cert=</path/to/pem> -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

Este es un ejemplo que restaura testdb a partir de un archivo de copia de seguridad creado con mysqldump:

Importante

  • Para el servidor único de Azure Database for MySQL, use el formato admin-user@servername para reemplazar myserveradmin en el comando siguiente.
  • Para el servidor flexible de Azure Database for MySQL, use el formato admin-user para reemplazar myserveradmin en el comando siguiente.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql

Pasos siguientes

Si los pasos anteriores no resuelven el problema, siempre puede restaurar todo el servidor: