Solución de problemas para la actualización Aurora MySQL en el lugar
Utilice las siguientes sugerencias para solucionar problemas con las actualizaciones in situ de Aurora MySQL. Estas sugerencias no se aplican a los clústeres de base de datos de Aurora Serverless.
Motivo por el que la actualización en el lugar se cancela o se ralentiza | Efecto | Solución para permitir que la actualización en el lugar se complete dentro de la ventana de mantenimiento |
---|---|---|
La réplica entre regiones de Aurora asociadas aún no cuenta con revisión | Aurora cancela la actualización. | Actualice la réplica entre regiones de Aurora e inténtelo de nuevo. |
El clúster tiene transacciones XA en el estado preparado | Aurora cancela la actualización. | Confirme o revierta todas las transacciones XA preparadas. |
El clúster está procesando cualquier declaración de lenguaje de definición de datos (DDL) | Aurora cancela la actualización. | Considere la posibilidad de esperar y realizar la actualización una vez finalizadas todas las instrucciones DDL. |
El clúster tiene cambios no confirmados para muchas filas | Esto puede llevar mucho tiempo. |
El proceso de actualización revierte los cambios no confirmados. El indicador para esta condición es el valor de Considere la posibilidad de realizar la actualización solo después de que todas las transacciones grandes se hayan confirmado o deshecho. |
El clúster tiene un gran número de registros de deshacer | Esto puede llevar mucho tiempo. |
Incluso si las transacciones no confirmadas no afectan a un gran número de filas, pueden implicar un gran volumen de datos. Por ejemplo, puede que esté insertando BLOBs grandes. Aurora no detecta ni genera automáticamente un evento para este tipo de actividad de transacción. El indicador de esta condición es la longitud de la lista de historial (HLL). El proceso de actualización revierte los cambios no confirmados. Puede comprobar el HLL en la salida del comando SQL
También puede monitorizar la métrica Considere la posibilidad de realizar la actualización solo después de que la HLL sea menor. |
El clúster está en el proceso de confirmar una transacción de registro binario grande | Esto puede llevar mucho tiempo. |
El proceso de actualización espera hasta que se apliquen los cambios en el registro binario. Más transacciones o instrucciones DDL podrían comenzar durante este período, lo que ralentiza aún más el proceso de actualización. Programe el proceso de actualización cuando el clúster no esté ocupado con la generación de cambios de reproducción de registros binarios. Aurora no detecta ni genera automáticamente un evento para esta condición. |
Inconsistencias en el esquema causadas por la eliminación o la corrupción de un archivo | Aurora cancela la actualización. |
Cambie el motor de almacenamiento predeterminado para las tablas temporales de MyISAM a InnoDB. Siga estos pasos:
|
Se ha eliminado el usuario maestro | Aurora cancela la actualización. |
importanteNo elimine el usuario maestro. Sin embargo, si por alguna razón elimina el usuario maestro, restáurelo mediante los siguientes comandos SQL:
|
Para obtener más información sobre la solución de problemas que provocan el error de las comprobaciones previas a la actualización, consulte los siguientes blogs:
Puede utilizar los siguientes pasos para realizar sus propias comprobaciones de algunas de las condiciones de la tabla anterior. De esta forma, puede programar la actualización en un momento en que sepa que la base de datos se encuentra en un estado en el que la actualización puede completarse correctamente y rápidamente.
-
Puede comprobar si hay transacciones XA abiertas ejecutando la instrucción
XA RECOVER
. A continuación, puede confirmar o revertir las transacciones XA antes de iniciar la actualización. -
Puede comprobar si hay instrucciones DDL ejecutando una instrucción
SHOW PROCESSLIST
y buscando las instruccionesCREATE
,DROP
,ALTER
,RENAME
yTRUNCATE
en la salida. Permita que todas las instrucciones DDL finalicen antes de iniciar la actualización. -
Puede comprobar el número total de filas no confirmadas consultando la tabla
INFORMATION_SCHEMA.INNODB_TRX
. La tabla contiene una fila para cada transacción. La columnaTRX_ROWS_MODIFIED
contiene el número de filas modificadas o insertadas por la transacción. -
Puede verificar la longitud de la lista de historial de InnoDB ejecutando la instrucción
SHOW ENGINE INNODB STATUS SQL
y buscando elHistory list length
en la salida. También puede comprobar el valor directamente ejecutando la siguiente consulta:SELECT count FROM information_schema.innodb_metrics WHERE name = 'trx_rseg_history_len';
La longitud de la lista de historial corresponde a la cantidad de información de deshacer almacenada por la base de datos para implementar el control de concurrencia multiversión (MVCC).