En esta página, se describen los problemas conocidos y las incompatibilidades que puedes encontrar después de realizar una actualización de versión principal de Cloud SQL para MySQL 5.7 a Cloud SQL para MySQL 8.0.
Para obtener más información sobre la actualización de la versión principal, consulta Actualiza la versión principal de la base de datos de manera local. Para obtener más información sobre los registros de errores, consulta Visualiza los registros de errores.
Problemas de rendimiento
En las siguientes secciones, se abordan los problemas de rendimiento conocidos.
Problemas con la búsqueda de SELECT DISTINCT
Si usas la consulta SELECT DISTINCT en MySQL 8.0.18 a MySQL 8.0.20, es posible que experimentes una reducción en el rendimiento. Los tiempos de ejecución de las consultas pueden tardar tres veces más en comparación con MySQL 5.7.
Para obtener más información, consulta Error #99593 de MySQL.
Para resolver este problema, sigue estas recomendaciones:
- Actualiza a MySQL 8.0.21, a cualquier versión secundaria posterior o a la versión más reciente.
- Si usas MySQL 8.0.18 a MySQL 8.0.20, actualiza el valor de la marca de base de datos
internal_tmp_mem_storage_engineamemory:SET SESSION internal_tmp_mem_storage_engine='memory' ;
Problemas con las búsquedas de GROUP BY
Si usas consultas SELECT... GROUP BY en MySQL 8.0.36 o versiones anteriores, es posible que experimentes una reducción del rendimiento y un aumento en los tiempos de ejecución de las consultas.
Esto puede ocurrir si la búsqueda utiliza el motor de TempTable.
Para obtener más información, consulta Error #107700 de MySQL.
Para resolver este problema, sigue estas recomendaciones:
- Actualiza a MySQL 8.0.37, a cualquier versión secundaria posterior o a la versión más reciente.
- Si usas MySQL 8.0.36 o una versión anterior, actualiza la marca de la base de datos
internal_tmp_mem_storage_enginepara usar el motor de memoria en lugar del motor de tablas temporales:SET SESSION internal_tmp_mem_storage_engine='memory' ;
Problemas en subprocesos con baja simultaneidad
Las instancias creadas en MySQL 8.0.22 o versiones posteriores que admiten aplicaciones cliente con subprocesos de baja simultaneidad pueden experimentar problemas de rendimiento y tiempos de ejecución de consultas más largos.
MySQL 8.0.22 introdujo la marca innodb_log_writer_threads para mejorar el rendimiento en sistemas de alta simultaneidad. Esta marca está habilitada de forma predeterminada. Si tienes instancias creadas en MySQL 8.0.22 o versiones posteriores que admiten aplicaciones cliente con subprocesos de baja simultaneidad, te recomendamos que inhabilites la marca innodb_log_writer_threads.
Para obtener más información, consulta Error #93734 de MySQL.
Problemas con JOINS
Si usas consultas JOIN con la vista eq_ref en instancias que usan MySQL 8.0.29 a MySQL 8.0.32, es posible que experimentes problemas de rendimiento significativos.
Para obtener más información, consulta el error #109361 de MySQL.
Para resolver este problema, actualiza a MySQL 8.0.33, a cualquier versión secundaria posterior o a la versión más reciente.
Problemas con las cláusulas LIMIT y ORDER BY
Si ejecutas una consulta con las cláusulas LIMIT y ORDER BY en MySQL 8.0.32 o versiones anteriores, es posible que experimentes un problema de rendimiento. En algunos casos, se puede usar un plan de consultas diferente en MySQL 8.0 en comparación con MySQL 5.7 para la misma consulta.
Para obtener más información, consulta Cambios en MySQL 8.0.33.
Para resolver este problema, actualiza a MySQL 8.0.33, a cualquier versión secundaria posterior o a la versión más reciente.
Problemas de fuga de memoria en MySQL 8.0
En las siguientes secciones, se abordan los problemas conocidos de pérdida de memoria en MySQL 8.0 o versiones posteriores. Es probable que estos problemas también afecten el rendimiento de la instancia.
Fuga de memoria causada por consultas de rango
Si usas el optimizador de rangos en instancias con MySQL 8.0.16 a MySQL 8.0.28, es posible que se produzca un alto consumo de memoria por parte del archivo de código y la función memory/sql/THD::main_mem_root. Esto puede hacer que la instancia se quede sin memoria (OOM).
Para obtener más información, consulta Error #105331 de MySQL.
Para resolver este problema, actualiza a MySQL 8.0.29, a cualquier versión secundaria posterior o a la versión más reciente.
Fuga de memoria asociada con procedimientos almacenados
Si ejecutas una consulta en un procedimiento almacenado en instancias con MySQL 8.0.27 a 8.0.31, es posible que la consulta consuma una cantidad muy alta de memoria en el archivo y la función de código memory/sql/sp_head::execute_mem_root.
Para obtener más información, consulta Error #107327 de MySQL.
Para resolver este problema, actualiza a MySQL 8.0.32, a cualquier versión secundaria posterior o a la versión más reciente.
Fuga de memoria causada por el acceso a una vista con SELECT
Si usas la consulta SELECT en MySQL 8.0.35 o en una versión anterior, y tu aplicación usa numerosas llamadas de vista, es posible que experimentes una pérdida de memoria notable.
Además, si la vista DEFINER está configurada como root@'%' o un usuario derivado del rol cloudsqlsuperuser, es posible que se produzca una pérdida de memoria. Esto se debe a que el rol cloudsqlsuperuser tiene privilegios de revocación parcial.
Para obtener más información, consulta Error #103133 de MySQL.
Para resolver este problema, sigue estas recomendaciones:
- Actualiza a MySQL 8.0.36, a cualquier versión secundaria posterior o a la versión más reciente.
- Si usas MySQL 8.0.35 o una versión anterior, usa un usuario independiente para la vista
DEFINER, específicamente un usuario que no tenga privilegios de revocación parcial. Si debes usar el usuarioroot@'%'o el rolcloudsqlsuperuser, asegúrate de usarlos solo para procesos administrativos y no para consultas de aplicaciones. Si la pérdida de memoria persiste, debes actualizar a MySQL 8.0.36, a cualquier versión secundaria posterior o a la versión más reciente.
Problemas de replicación
En la siguiente sección, se describen los problemas conocidos relacionados con la replicación.
Problemas con la replicación paralela
Si usas la replicación paralela en una réplica de varios subprocesos que tiene habilitado el componente slave_preserve_commit_order y la instancia se usa para cargas de trabajo con muchas escrituras, es posible que las operaciones de la instancia se pausen de forma indefinida debido a un interbloqueo y a la acumulación de tiempo de retraso de la replicación.
Este problema se observa en MySQL 8.0.27 a MySQL 8.0.32.
Para obtener más información, consulta Error #95863 de MySQL y Error #103636 de MySQL.
Para resolver este problema, sigue estas recomendaciones:
- Actualiza a MySQL 8.0.33, a cualquier versión secundaria posterior o a la versión más reciente.
- Inhabilita la replicación paralela para verificar la causa de este problema y, luego, programa una actualización adecuada. Si bien inhabilitar la replicación paralela puede resolver el problema de forma temporal, no se recomienda como solución a largo plazo.
Problemas de privilegios
En las siguientes secciones, se analizan los problemas conocidos relacionados con los privilegios.
Cambios en los privilegios
MySQL cambió los sistemas de administración de cuentas y seguridad en MySQL 8.0.
Después de actualizar a MySQL 8.0, es posible que los usuarios creados en MySQL 5.7 no tengan los mismos privilegios y acceso que los usuarios creados en MySQL 8.0. Como resultado, los usuarios creados en MySQL 5.7 pueden recibir un mensaje de error de acceso denegado en las siguientes situaciones:
- Es posible que los usuarios actualizados desde MySQL 5.7 no tengan los privilegios
CREATE ROLEyDROP ROLE, ya que estos privilegios no existían en MySQL 5.7. - Es posible que los usuarios que se actualizaron desde MySQL 5.7 no puedan ejecutar el comando
KILL, que ahora necesita privilegios deCONNECTION_ADMINpara funcionar en MySQL 8.0.
Para obtener más información, puedes consultar todos los privilegios disponibles en MySQL 8.0.
Un ejemplo de mensaje de error es similar al siguiente:
ERROR 1227 (42000): Access denied; you need (at least one of) the GRANT OPTION privilege(s) for this operation
No puedes asignar directamente ninguno de estos privilegios actualizados a un usuario existente.
Para resolver este problema, un administrador con privilegios de GRANT OPTION debe restablecer los privilegios de usuario después de la actualización para completar la actualización de la versión principal.
Para obtener más información, consulta Actualiza la versión principal de la base de datos de manera local.
Los cambios en los privilegios provocan el error de acceso denegado
Es posible que los usuarios creados en MySQL 5.7 que se actualizaron a MySQL 8.0 no puedan conectarse a la base de datos debido a un problema de privilegios. En esos casos, es posible que los usuarios reciban el siguiente mensaje de error:
Access denied for user 'USER_NAME'@'%' to database 'MY_DATABASE_NAME' ;
MySQL 8.0.16 introdujo la marca de base de datos partial_revokes y la habilitó de forma predeterminada, lo que permite revocar parcialmente los privilegios del usuario.
Si los usuarios creados en MySQL 5.7 se definieron con caracteres comodín, es posible que esos usuarios no puedan conectarse a la base de datos. Los caracteres comodín ya no son compatibles con MySQL 8.0.16 ni versiones posteriores. Esto significa que MySQL no puede encontrar una coincidencia exacta para la base de datos y el usuario, lo que podría provocar que se omitan algunas asignaciones de privilegios existentes en la actualización.
Este problema afecta a MySQL 8.0.16 o versiones posteriores.
Para obtener más información, consulta Configura marcas de bases de datos y Administración de cuentas y seguridad.
Para resolver este problema, un administrador debe asignar permisos de forma manual a los usuarios en MySQL 8.0.
Cambios en los valores de las marcas entre MySQL 5.7 y MySQL 8.0
Cuando actualizas de MySQL 5.7 a MySQL 8.0, es posible que algunos valores de marcas de bases de datos cambien debido a un cambio en los valores predeterminados entre las versiones. Este comportamiento puede causar problemas de rendimiento.
Para obtener más información, consulta Nuevos valores predeterminados en MySQL 8.0.
Para resolver este problema, asegúrate de que los valores de las marcas de la base de datos asignados manualmente que se establecieron en MySQL 5.7 se sigan aplicando después de la actualización a MySQL 8.0 o una versión posterior. Te recomendamos que dejes los valores predeterminados asignados a las marcas del sistema.
¿Qué sigue?
- Actualiza la versión principal de la base de datos mediante la migración de datos
- Actualiza la versión secundaria de la base de datos