Migrar a MySql 8.x
La intención es plasmar los impedimentos con sus soluciones que encontré al actualizar la versión de MySQL de 5.7 a 8.0.
El problema no está en hacer el upgrade desde GCP, sino algunas queries que no son exactamente
iguales en la versión 8.x, sobre todo las relacionadas a consultas sobre columnas Geometry.
Para solucionar estos problemas ver la sección sobre columnas geometry.
Otro error detectado en los logs se produce en la función cron-jobs-executer que al intentar correr
uno de los jobs, la consulta falla por problemas de compatibilidad. Ver en la sección.
Pasar columnas a SRID 4326
HACER ESTO ANTES DE ACTUALIZAR A VERSIÓN 8.x!!
Primero que nada obtener las tablas con SPATIAL INDEX
SELECT t.NAME AS 'schema/table', f.NAME AS 'column', i.NAME AS 'index'
FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES AS i
JOIN INFORMATION_SCHEMA.INNODB_SYS_TABLES AS t
ON i.TABLE_ID = t.TABLE_ID
JOIN INFORMATION_SCHEMA.INNODB_SYS_FIELDS AS f
ON i.INDEX_ID = f.INDEX_ID
WHERE i.TYPE = 64;
Por ejemplo:
+----------------------+----------+----------------------+
| schema/table | column | index |
+----------------------+----------+----------------------+
| sils_des/cartografia | geometry | cartografia_geometry |
| sils_des/lugares | geometry | lugares_geometry |
+----------------------+----------+----------------------+
Para cada una de ellas verificar la cantidad de SRIDs distintos:
MySQL [sils_des]> SELECT COUNT(DISTINCT ST_SRID(geometry)) AS num_srids FROM cartografia;
+-----------+
| num_srids |
+-----------+
| 1 |
+-----------+
MySQL [sils_des]> SELECT COUNT(DISTINCT ST_SRID(geometry)) AS num_srids FROM lugares;
+-----------+
| num_srids |
+-----------+
| 1 |
+-----------+
En el caso de obtener más de un SRID, modificar para sólo tener el SRID 4326 como muestra la documentación.
Actualizar a versión 8.x
Actualizar tablas con geometry
Primer borrar los index:
DROP INDEX cartografia_geometry ON cartografia;
Fijar un SRID:
ALTER TABLE cartografia MODIFY COLUMN geometry geometry NOT NULL SRID 4326;
Crear el index:
CREATE SPATIAL INDEX cartografia_geometry on cartografia(geometry);
Error en cron-jobs-executer
TL;DR
El problema se da en la ejecución del job cleanDbCacheJob. Por lo tanto
desactivarlo en el scheduler soluciona el problema.
Explicación
En MySQL 8.x la query SHOW STATUS LIKE 'Qcache_free_memory' no devuelve
ningún resultado, dado que ha sido deprecado, como se puede ver en la documentación.
Cuando se intenta ejecutar la query siguiente, se genera el fallo
RESET QUERY CACHE.
No es necesario hacerlo asique directamente se puede desactivar el scheduler.