En esta página se incluye una lista de los problemas más frecuentes que pueden surgir al trabajar con instancias de Cloud SQL y los pasos que puede seguir para solucionarlos. Consulta también las páginas Problemas conocidos, Solución de problemas y Página de asistencia.
Ver registros
Para ver información sobre las operaciones recientes, puedes consultar los registros de operaciones de la instancia de Cloud SQL o los registros de errores de MySQL.
La instancia no responde
Si tu instancia deja de responder a las conexiones o su rendimiento se ve afectado, comprueba que cumple las directrices operativas. Si no cumple estas directrices, no estará cubierto por el acuerdo de nivel de servicio de Cloud SQL.
Problemas de conexión
Consulta la página Depurar problemas de conexión o la sección Conectividad de la página de solución de problemas para obtener ayuda con los problemas de conexión.
Problemas con las instancias
Copias de seguridad
Para que las copias de seguridad tengan el mejor rendimiento posible, mantén un número razonable de tablas.
Si tienes otros problemas con las copias de seguridad, consulta la sección Copias de seguridad de la página de solución de problemas.
Importar y exportar
Las importaciones y exportaciones en Cloud SQL son iguales que usar la utilidad mysqldump
, excepto que, con la función de importación y exportación de Cloud SQL, se transfieren datos mediante un segmento de Cloud Storage.
Las importaciones en Cloud SQL y las exportaciones desde Cloud SQL pueden tardar mucho tiempo en completarse, dependiendo del tamaño de los datos que se estén procesando. Esto puede tener los siguientes efectos:
- No puedes detener una operación de instancia de Cloud SQL de larga duración.
- Solo puedes realizar una operación de importación o exportación a la vez en cada instancia. Además, las importaciones o exportaciones de larga duración bloquean otras operaciones, como las copias de seguridad automáticas diarias. Las exportaciones sin servidor te permiten ejecutar otras operaciones, como editar instancias, importar, conmutar por error y desbloquear copias de seguridad automáticas diarias.
Puedes reducir el tiempo necesario para completar cada operación usando la función de importación o exportación de Cloud SQL con lotes de datos más pequeños.
En el caso de las exportaciones, puedes realizarlas desde una réplica de lectura o usar la exportación sin servidor para minimizar el impacto en el rendimiento de la base de datos y permitir que se ejecuten otras operaciones en tu instancia mientras se lleva a cabo una exportación.
Otros aspectos que debes tener en cuenta al importar:
- Si la importación falla, puede deberse a un error de falta de memoria (OOM).
Si es así, puedes probar a usar comandos de MySQL directamente para añadir los parámetros de
--extended-insert=FALSE --complete-insert
. Estos parámetros reducen la velocidad de la importación, pero también la cantidad de memoria que requiere.
Si tienes otros problemas con la importación y la exportación, consulta la sección Importación y exportación de la página de solución de problemas.
Espacio en disco
Si tu instancia alcanza la cantidad de almacenamiento máxima permitida, se producirán fallos en las operaciones de escritura en la base de datos. Si elimina datos, por ejemplo, eliminando una tabla, el espacio liberado no se refleja en el Almacenamiento usado de la instancia. Consulta la pregunta frecuente ¿Cómo puedo recuperar el espacio de una tabla eliminada? para obtener una explicación de este comportamiento.Si se alcanza el límite máximo de almacenamiento, la instancia también puede quedarse bloqueada en el reinicio.
Evitar que los datos se dañen
Evitar columnas generadas
Debido a un problema de MySQL, el uso de columnas generadas puede provocar daños en los datos. Para obtener más información, consulta el error de MySQL #82736.
Apagados limpios
Cuando Cloud SQL cierra una instancia (por ejemplo, por mantenimiento), no se envían nuevas conexiones a la instancia y se finalizan las conexiones activas. El tiempo que tiene mysqld para cerrarse está limitado a 1 minuto. Si no se cierra en ese tiempo, el proceso mysqld se detiene forzosamente. Esto puede provocar que las escrituras en disco se aborten a mitad de proceso.
Motores de bases de datos
InnoDB es el único motor de almacenamiento compatible con las instancias de MySQL, ya que es más resistente a la corrupción de tablas que otros motores de almacenamiento de MySQL, como MyISAM.
De forma predeterminada, las tablas de bases de datos de Cloud SQL se crean con el motor de almacenamiento InnoDB. Si la sintaxis de CREATE TABLE
incluye una opción ENGINE
que especifica un motor de almacenamiento distinto de InnoDB, por ejemplo
ENGINE = MyISAM
, la tabla no se crea y se muestran mensajes de error
como el siguiente:
ERROR 3161 (HY000): Storage engine MyISAM is disabled (Table creation is disallowed).
Para evitar este error, quite la opción ENGINE = MyISAM
del comando CREATE TABLE
. De esta forma, se crea la tabla con el motor de almacenamiento InnoDB.
Cambios en las tablas del sistema
Las tablas del sistema MySQL usan el motor de almacenamiento MyISAM, incluidas todas las tablas de la base de datos mysql
, como mysql.user
y mysql.db
. Estas tablas son vulnerables a los apagados incorrectos. Ejecuta el comando FLUSH CHANGES
después de hacer cambios en ellas. Si se produce una corrupción de MyISAM, CHECK TABLE
y REPAIR TABLE
pueden restaurar el estado correcto (pero no los datos guardados).
Identificadores de transacción globales (GTID)
Todas las instancias de MySQL tienen GTID habilitado automáticamente. Si tienes habilitado GTID, se evita la pérdida de datos durante la creación de réplicas y la conmutación por error, y la replicación es más sólida. Sin embargo, GTID tiene algunas limitaciones impuestas por MySQL, tal como se documenta en el manual de MySQL. Las siguientes operaciones no seguras desde el punto de vista de las transacciones no se pueden usar con un servidor MySQL con GTID habilitado:
CREATE TABLE ... SELECT
declaraciones;CREATE TEMPORARY TABLE
extractos de las transacciones;- Transacciones o instrucciones que afectan a tablas transaccionales y no transaccionales.
Si usas una transacción que no es segura desde el punto de vista transaccional, verás un mensaje de error como el siguiente ejemplo:
Exception: SQLSTATE[HY000]: General error: 1786
CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.
Trabajar con activadores y funciones almacenadas
Si tu instancia tiene habilitado el registro binario y necesitas trabajar con activadores o funciones almacenadas, asegúrate de que tu instancia tenga la marca log_bin_trust_function_creators
con el valor on
.
Estado suspendido
Hay varios motivos por los que Cloud SQL puede suspender una instancia, entre los que se incluyen los siguientes:
Problemas de facturación
Por ejemplo, si la tarjeta de crédito de la cuenta de facturación del proyecto ha caducado, la instancia puede suspenderse. Para consultar la información de facturación de un proyecto, ve a la Google Cloud página de facturación de la consola, selecciona el proyecto y consulta la información de la cuenta de facturación que se usa en él. Una vez que resuelva el problema de facturación, la instancia volverá al estado ejecutable en unas horas.
Problemas clave de Cloud Key Management Service
Por ejemplo, si no está presente la versión de la clave de Cloud KMS que se usa para cifrar los datos de usuario en la instancia de Cloud SQL, se revoca el acceso a la clave o se desactiva o elimina la clave. Para obtener más información, consulta Usar claves de cifrado gestionadas por el cliente (CMEK).
Problemas legales
Por ejemplo, si se infringe la Google Cloud Política de Uso Aceptable, se puede suspender la instancia. Para obtener más información, consulta la sección "Suspensiones y retiradas" de los Google Cloud Términos del Servicio.
Problemas operativos
Por ejemplo, si una instancia se queda atascada en un bucle de fallos (falla al iniciarse o justo después de iniciarse), Cloud SQL puede suspenderla.
Mientras una instancia está suspendida, puedes seguir viendo información sobre ella o eliminarla si los problemas de facturación han provocado la suspensión.
Los usuarios de Cloud SQL con paquetes de asistencia Platino, Oro o Plata pueden ponerse en contacto directamente con nuestro equipo de asistencia para solucionar el problema de las instancias suspendidas. Todos los usuarios pueden usar las directrices anteriores junto con el foro google-cloud-sql.
Rendimiento
Información general
Cloud SQL admite cargas de trabajo que exigen un rendimiento intensivo,ya que ofrece hasta 60.000 IOPS sin coste adicional por E/S. El rendimiento de las IOPS y el rendimiento dependen del tamaño del disco, el número de vCPUs de la instancia y el tamaño del bloque de E/S, entre otros factores.
El rendimiento de tu instancia también depende del tipo de almacenamiento que elijas y de la carga de trabajo.
Consulta más información sobre lo siguiente:
- Discos persistentes y rendimiento.
- Métricas de rendimiento y limitación.
- Optimizar el rendimiento del disco.
- Otros factores que afectan al rendimiento
Habilitar registros de consultas
Para optimizar el rendimiento de tus consultas, puedes configurar Cloud SQL para que registre las consultas lentas añadiendo las marcas de base de datos
--log_output='FILE'
y --slow_query_log=on
a tu instancia.
De esta forma, la salida del registro estará disponible en el visualizador de registros de la Google Cloud consola.
Ten en cuenta que se aplican cargos de registro de Google Cloud Observability.
No asignes el valor TABLE
a log_output. Si lo haces, pueden producirse problemas de conexión, tal como se describe en los consejos para trabajar con marcas.
Puedes consultar este tutorial para obtener instrucciones sobre cómo registrar y monitorizar las consultas lentas de Cloud SQL para MySQL con Cloud Logging y Monitoring.
Habilitar la monitorización de bloqueos
Los monitores de InnoDB proporcionan información sobre el estado interno del motor de almacenamiento InnoDB, que puedes usar para optimizar el rendimiento.
Accede a la instancia mediante el cliente MySQL y obtén la salida del monitor bajo demanda:
SHOW ENGINE INNODB STATUS\G
Para obtener explicaciones sobre las secciones de la salida del monitor, consulta Salida del monitor estándar y del monitor de bloqueos de InnoDB.
Puede habilitar los monitores de InnoDB para que se genere una salida periódicamente en un archivo o una tabla, con una degradación del rendimiento. Para obtener más información, consulta Habilitar monitores de InnoDB.
Usar el esquema de rendimiento
El esquema de rendimiento de MySQL es una función que permite monitorizar la ejecución del servidor MySQL a nivel bajo. La forma más accesible de consultar las estadísticas generadas en performance_schema es a través de la función Informes de rendimiento de MySQL Workbench.
Mantener un número razonable de tablas de bases de datos
Las tablas de bases de datos consumen recursos del sistema. Un número elevado puede afectar al rendimiento y la disponibilidad de la instancia, así como provocar que pierda la cobertura de su acuerdo de nivel de servicio. Más información
Consejos de rendimiento general
. Si las inserciones, actualizaciones o eliminaciones de bases de datos son lentas, considera las siguientes acciones:- Comprueba las ubicaciones del escritor y de la base de datos. Si los datos se envían a una distancia larga, se introduce latencia.
En el caso de las selecciones lentas en la base de datos, ten en cuenta estos aspectos:
- El almacenamiento en caché es importante para el rendimiento de lectura. Compara el tamaño de tu conjunto de datos con el tamaño de la RAM de tu instancia. Lo ideal es que todo el conjunto de datos quepa en el 70% de la RAM de la instancia. En ese caso, las consultas no estarán limitadas por el rendimiento de E/S. Si no es así, considera la posibilidad de aumentar el tamaño de la RAM de tu instancia.
- Si tu carga de trabajo consta de consultas que consumen muchos recursos de CPU (ordenación, expresiones regulares u otras funciones complejas), es posible que tu instancia se limite. Aumenta las vCPUs.
Si observas que el rendimiento de las consultas es deficiente, usa EXPLAIN
. EXPLAIN es una instrucción que se añade a otras instrucciones, como SELECT, y devuelve información sobre cómo ejecuta MySQL la instrucción. Funciona con SELECT, DELETE, INSERT, REPLACE y UPDATE. Por ejemplo, EXPLAIN SELECT * FROM myTable;
.
Usa EXPLAIN
para identificar dónde puedes:
Añade índices a las tablas para mejorar el rendimiento de las consultas. Por ejemplo, asegúrate de que cada campo que usas como clave JOIN tenga un índice en ambas tablas.
Mejorar las operaciones de
ORDER BY
. SiEXPLAIN
muestra "Using temporary; Using filesort" en la columna Extra de la salida, significa que los resultados intermedios se almacenan en un archivo que luego se ordena, lo que suele dar lugar a un rendimiento deficiente. En este caso, siga uno de estos pasos:Si es posible, usa índices en lugar de ordenar. Consulta ORDER BY Optimization para obtener más información.
Aumenta el tamaño de la variable
sort_buffer_size
de la sesión de consulta.Usa menos RAM por fila declarando las columnas solo con el tamaño necesario.
Solucionar problemas
Si tienes otros problemas con Cloud SQL, consulta la página de solución de problemas.
Mensajes de error
Para ver mensajes de error específicos de la API, consulta la página de referencia Mensajes de error.
Solucionar problemas de claves de cifrado gestionadas por el cliente (CMEK)
Las operaciones de administrador de Cloud SQL, como crear, clonar o actualizar, pueden fallar debido a errores de Cloud KMS y a la falta de roles o permisos. Entre los motivos habituales por los que se produce un error se incluyen los siguientes: falta una versión de la clave de Cloud KMS, la versión de la clave de Cloud KMS está inhabilitada o destruida, no se tienen permisos de IAM suficientes para acceder a la versión de la clave de Cloud KMS o la versión de la clave de Cloud KMS está en una región diferente a la de la instancia de Cloud SQL. Usa la siguiente tabla para diagnosticar y resolver problemas habituales.
Tabla de solución de problemas de claves de cifrado gestionadas por el cliente
Para este error... | El problema puede deberse a lo siguiente: | Prueba esto... |
---|---|---|
No se ha encontrado la cuenta de servicio por producto y por proyecto | El nombre de la cuenta de servicio no es correcto. | Asegúrate de haber creado una cuenta de servicio para el proyecto de usuario correcto.
|
No se puede conceder acceso a la cuenta de servicio | La cuenta de usuario no tiene permiso para conceder acceso a esta versión de la clave. | Añade el rol Administrador de la organización a tu cuenta de usuario o de servicio.
|
La versión de la clave de Cloud KMS se ha destruido | La versión de la clave se elimina. | Si se destruye la versión de la clave, no podrás usarla para encriptar ni desencriptar datos. |
La versión de la clave de Cloud KMS está inhabilitada | La versión de la clave está inhabilitada. | Vuelve a habilitar la versión de la clave de Cloud KMS.
|
Permiso insuficiente para usar la clave de Cloud KMS | Falta el rol cloudkms.cryptoKeyEncrypterDecrypter en la cuenta de usuario o de servicio que estás usando para ejecutar operaciones en instancias de Cloud SQL, o bien no existe la versión de la clave de Cloud KMS. |
En el Google Cloud proyecto que aloja la clave, añade el rol cloudkms.cryptoKeyEncrypterDecrypter a tu usuario o cuenta de servicio.
Si el rol ya se ha asignado a tu cuenta, consulta Crear una clave para saber cómo crear una nueva versión de la clave. Consulta la nota. |
No se ha encontrado la clave de Cloud KMS | La versión de la clave no existe. | Crea una versión de clave. Consulta Crear una clave. Consulta la nota. |
La instancia de Cloud SQL y la versión de la clave de Cloud KMS están en regiones diferentes | La versión de la clave de Cloud KMS y la instancia de Cloud SQL deben estar en la misma región. No funciona si la versión de la clave de Cloud KMS está en una región global o multirregional. | Crea una versión de la clave en la misma región en la que quieras crear instancias. Consulta Crear una clave. Consulta la nota. |
Se ha restaurado la versión de la clave de Cloud KMS, pero la instancia sigue suspendida | La versión de la clave está inhabilitada o no concede los permisos adecuados. | Vuelve a habilitar la versión de la clave y asigna el rol cloudkms.cryptoKeyEncrypterDecrypter a tu usuario o cuenta de servicio en el Google Cloud proyecto que aloja la clave. |
Tabla de solución de problemas de recifrado
Para este error... | El problema puede deberse a lo siguiente: | Prueba esto... |
---|---|---|
No se ha podido volver a cifrar el recurso CMEK porque no se puede acceder a la clave de Cloud KMS. Asegúrate de que la versión de la clave principal esté habilitada y de que el permiso se haya concedido correctamente. | La versión de la clave está inhabilitada o no concede los permisos adecuados. | Vuelve a habilitar la versión de la clave de Cloud KMS: IR A LA PÁGINA CLAVES CRIPTOGRÁFICAS En el Google Cloud proyecto que aloja la clave, confirma que el rol
|
No se ha podido volver a cifrar el recurso de CMEK debido a un error interno del servidor. Vuelve a intentarlo más tarde. | Se ha producido un error interno del servidor. | Vuelve a intentar el recifrado. Para obtener más información, consulta Volver a cifrar una instancia o una réplica con CMEK. |