Diagnostica problemas con las instancias de Cloud SQL

En esta página, se muestra una lista de los problemas más frecuentes que pueden generarse cuando trabajamos con instancias de Cloud SQL y los pasos que se pueden seguir para solucionarlos. También revisa las páginas Problemas conocidos, Solución de problemas y Página de asistencia.

Cómo ver registros

Para ver información sobre operaciones recientes, puedes consultar los registros de operaciones de instancias de Cloud SQL o los registros de error de MySQL.

La instancia no responde

Si tu instancia deja de responder a las conexiones, o se degrada el rendimiento, asegúrate de que cumpla con los Lineamientos operativos. Si no cumple con estos lineamientos, no está cubierta por el ANS de Cloud SQL.

Problemas de conexión

Consulta la página Depuración de problemas de conexión o la sección Conectividad de la página de solución de problemas para obtener ayuda con problemas de conexión.

Problemas de instancias

Copias de seguridad

Para obtener el mejor rendimiento de las copias de seguridad, mantén la cantidad de tablas en un número razonable.

Para otros problemas de copia de seguridad, consulta la sección Copias de seguridad en la página de solución de problemas.

Importación y exportación

Usar las importaciones y exportaciones en Cloud SQL es lo mismo que usar la herramienta mysqldump, excepto que, con la función de importación y exportación de Cloud SQL, transfieres los datos mediante un depósito de Cloud Storage.

Las importaciones y exportaciones en Cloud SQL mediante la función de importación (a través de un depósito de Cloud Storage) pueden llevar mucho tiempo en completarse, según el tamaño de la base de datos. Esto puede tener las siguientes consecuencias:

  • 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 para cada instancia.

Puedes disminuir la cantidad de tiempo que lleva completar cada operación mediante la función de importación o exportación de Cloud SQL con lotes de datos más pequeños.

Para las exportaciones, puedes usar la exportación sin servidores a fin de minimizar el impacto en el rendimiento de la base de datos y permitir que otras operaciones se ejecuten en la instancia mientras se ejecuta una exportación.

Estos son otros puntos a tener en cuenta a la hora de importar:

  • Si la importación falla, es posible que la causa sea un error de memoria insuficiente (OOM). Si este es el caso, puedes intentar usar los comandos de MySQL directamente para agregar los parámetros --extended-insert=FALSE --complete-insert. Estos parámetros reducen la velocidad de la importación, pero también reducen la cantidad de memoria que la importación requiere.

Para otros problemas de importación y exportación, consulta la sección Importa y exporta de la página de solución de problemas.

Espacio en el disco

Si tu instancia alcanza la cantidad máxima de almacenamiento permitido, provoca un error de escritura en la base de datos. Si borras datos, por ejemplo, una tabla, el espacio liberado no se reflejará en el Almacenamiento usado informado de la instancia. Consulta en las Preguntas frecuentes, ¿Cómo puedo recuperar el espacio de una tabla eliminada? para obtener una explicación de este comportamiento.

Alcanzar el límite máximo de almacenamiento también puede hacer que la instancia se detenga durante el reinicio.

Cómo evitar la corrupción de datos

Cómo evitar columnas generadas

Debido a un problema en MySQL, el uso de columnas generadas puede provocar daños en los datos. Para obtener más información, consulta Error #82736 de MySQL.

Cierres claros

Cuando Cloud SQL cierra una instancia (p. ej., para mantenimiento), no se envían conexiones nuevas a la instancia y se interrumpen las conexiones existentes. El tiempo máximo que tiene mysqld para realizar el cierre es de 1 minuto. Si el cierre no se completa en ese tiempo, se fuerza la finalización del proceso de mysqld. Esto puede provocar que una operación de escritura en el disco se anule en la mitad del proceso.

Motores de base de datos

InnoDB es el único motor de almacenamiento compatible para las instancias de MySQL porque es más resistente a la corrupción en las 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 tu sintaxis CREATE TABLE incluye una opción ENGINE que especifica un motor de almacenamiento distinto a InnoDB, por ejemplo ENGINE = MyISAM, la tabla no se crea y verás mensajes de error como el siguiente ejemplo:

ERROR 3161 (HY000): Storage engine MyISAM is disabled (Table creation is disallowed).

Puedes evitar este error si quitas la opción ENGINE = MyISAM del comando CREATE TABLE. De este modo, 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 en la base de datos de mysql, como mysql.user y mysql.db. Estas tablas son vulnerables a cierres poco claros. Emite el comando FLUSH CHANGES después de realizar cambios en ellas. Si se produce un daño en MyISAM, CHECK TABLE y REPAIR TABLE pueden regresar a un estado óptimo (pero no pueden guardar datos).

Identificadores de transacciones globales (GTID)

Todas las instancias de MySQL tienen GTID habilitado de forma automática. Tener habilitado GTID sirve como protección contra la pérdida de datos durante la creación de réplicas y la conmutación por error, y hace que la replicación sea más robusta. Sin embargo, GTID posee algunas limitaciones que impone MySQL, como se documenta en el manual de MySQL. Las siguientes operaciones no seguras para transacciones no se pueden usar con un servidor MySQL que tenga GTID habilitado:

  • Declaraciones CREATE TABLE ... SELECT
  • Declaraciones CREATE TEMPORARY TABLE dentro de transacciones.
  • Transacciones o declaraciones que afecten a las tablas transaccionales y a las no transaccionales

Si usas una operación no segura para las transacciones, verás un mensaje de error como el siguiente:

 Exception: SQLSTATE[HY000]: General error: 1786
 CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.

Trabaja 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 configurada en on.

Estado de suspensión

Existen varios motivos por los que Cloud SQL puede suspender una instancia, incluidos los siguientes:

  • Problemas de facturación

    Por ejemplo, si la tarjeta de crédito de la cuenta de facturación del proyecto caducó, se puede suspender la instancia. Si quieres verificar los datos de facturación de un proyecto, visita la página de facturación de Google Cloud Console, selecciona el proyecto y visualiza la información de la cuenta de facturación que se usó para el proyecto. Después de resolver el problema de facturación, la instancia vuelve al estado ejecutable en unas pocas horas.

  • Problemas de clave KMS

    Por ejemplo, si la versión de clave KMS usada para encriptar los datos del usuario en la instancia de Cloud SQL no está presente, o si se inhabilitó o destruyó. Consulta Usa claves de encriptación administradas por el cliente (CMEK).

  • Problemas legales

    Por ejemplo, una infracción de la Política de Uso Aceptable de Google Cloud puede provocar la suspensión de la instancia. Para obtener más información, consulta “Suspensiones y eliminaciones” en las Condiciones del Servicio de Google Cloud.

  • Problemas operativos

    Por ejemplo, si una instancia se bloquea en un bucle de fallas (si falla mientras se inicia o poco después del inicio), Cloud SQL puede suspenderla.

Mientras una instancia está suspendida, puedes continuar viendo información sobre ella o borrarla si los problemas de facturación activaron la suspensión.

Los usuarios de Cloud SQL con paquetes de asistencia Platino, Oro, o Plata se pueden comunicar directamente con nuestro equipo de asistencia al cliente si quieren obtener información acerca de las instancias suspendidas. Todos los usuarios pueden usar la guía anterior junto con el foro google-cloud-sql.

Rendimiento

Descripción general

Cloud SQL admite cargas de trabajo de alto rendimiento de hasta 60,000 IOPS y sin costo adicional para E/S. Las IOPS y el rendimiento de la capacidad de procesamiento de un disco persistente dependen de la cantidad de CPU virtuales de la instancia, del tamaño del bloque de E/S y del tamaño del disco, entre otros factores.

El rendimiento de tu instancia también depende del tipo de almacenamiento que elijas y de la carga de trabajo.

Conoce más sobre:

Habilita registros de consultas

Para ajustar el rendimiento de tus consultas, puedes configurar Cloud SQL a fin de registrar consultas lentas mediante la adición de las marcas de base de datos --log_output='FILE' y --slow_query_log=on a la instancia. Esto hace que el resultado del registro esté disponible mediante el visor de registros de Google Cloud Console. Ten en cuenta que se aplican los cargos de registro de Google Cloud's operations suite.

No establezcas log_output como TABLE. Si lo haces, puedes causar problemas de conexión como se describe en Sugerencias para trabajar con marcas.

Cómo habilitar la supervisión de bloqueo

La supervisión de InnoDB proporciona información sobre el estado interno del motor de almacenamiento InnoDB, que puedes usar para optimizar el rendimiento.

Accede a la instancia con el cliente MySQL y obtén resultados de supervisión a pedido.

SHOW ENGINE INNODB STATUS\G

Para obtener una explicación de las secciones de los resultados de supervisión, consulta Resultado de supervisión de bloqueo y supervisión estándar de InnoDB.

Puedes habilitar la supervisión de InnoDB de modo que los resultados se generen de forma periódica en un archivo o una tabla, con una degradación del rendimiento. Para obtener más información, consulta Habilita la supervisión de InnoDB.

Usa el esquema de rendimiento

El esquema de rendimiento de MySQL es una función para supervisar la ejecución del servidor MySQL a un bajo nivel. La forma más accesible de consumir las estadísticas generadas en performance_schema es mediante la función Informes de rendimiento de MySQL Workbench.

Mantén un número razonable de tablas de base de datos

Las tablas de base de datos consumen recursos del sistema. Una cantidad muy grande de estas tablas puede afectar el rendimiento y la disponibilidad de la instancia, y hacer que pierda su cobertura del ANS. Más información.

Sugerencias para un mejor rendimiento general

. Para inserciones, actualizaciones o eliminaciones lentas de la base de datos, considera las siguientes acciones:
  • Revisa las ubicaciones del escritor y de la base de datos. El envío de datos a larga distancia provoca latencia.

Para la selección de base de datos lenta, considera lo siguiente:

  • El almacenamiento en caché es importante para el rendimiento de lectura. Compara el tamaño del conjunto de datos con el tamaño de la RAM de la instancia. Lo ideal sería que todo el conjunto de datos ocupe el 70% de la RAM de la instancia, en cuyo caso, las consultas no se limitan al rendimiento de IO. Si no es así, considera aumentar el tamaño de la RAM de tu instancia.
  • Si tu carga de trabajo consta de consultas que requieren mucha CPU (ordenamiento, expresiones regulares y otras funciones complejas), puede que la instancia tenga un límite. Se recomienda aumentar las CPU virtuales.
  • Verifica la ubicación del lector y de la base de datos. La latencia afecta el rendimiento de la lectura, incluso más que el de la escritura.
  • Investiga las mejoras de rendimiento no específico de Cloud SQL, como agregar la indexación adecuada, reducir los datos analizados y evitar las idas y vueltas adicionales.
  • Si observas un rendimiento bajo cuando ejecutas consultas, usa EXPLAIN. EXPLAIN es una declaración que agregas a otras declaraciones, como SELECT, y muestra información sobre cómo MySQL ejecuta la declaración. Funciona con SELECT, DELETE, INSERT, REPLACE y UPDATE. Por ejemplo, EXPLAIN SELECT * FROM myTable;.

    Usa EXPLAIN para identificar dónde puedes realizar lo siguiente:

    • Agregar índices a las tablas para mejorar el rendimiento de las consultas. Por ejemplo, asegúrate de que cada campo que usas como una clave JOIN tenga un índice en ambas tablas.

    • Mejorar las operaciones ORDER BY. Si EXPLAIN muestra “Uso temporal; uso de ordenamiento de archivo” en la columna Extra del resultado, los resultados intermedios se almacenan en un archivo que luego se ordena, lo que suele causar un rendimiento bajo. En este caso, sigue uno de estos pasos:

      • Si es posible, usa índices en lugar de un ordenamiento. Consulta Optimización de ORDENAR POR para obtener más información.

      • Aumenta el tamaño de la variable sort_buffer_size para la sesión de consulta.

      • Declara las columnas solo del tamaño que sea necesario para usar menos RAM por fila.

    Soluciona problemas

    Para otros problemas de Cloud SQL, consulta la página de solución de problemas.

    Mensajes de error

    Para ver mensajes de error de API específicos, consulta la página de referencia Mensajes de error.

    Soluciona problemas de claves de encriptación administradas por el cliente (CMEK)

    Las operaciones del administrador de Cloud SQL, como la creación, clonación o actualización, pueden fallar por errores de Cluod KMS y funciones o permisos faltantes. Entre los motivos más comunes de las fallas se incluyen una versión de clave de Cloud KMS faltante, una versión de clave de Cloud KMS inhabilitada o destruida, permisos de IAM insuficientes para acceder a la versión de clave de Cloud KMS o la ubicación de la versión de clave de Cloud KMS en una región diferente a la de la instancia de Cloud SQL. Usa la siguiente tabla de solución de problemas para diagnosticar y resolver problemas comunes.

    Tabla de solución de problemas de claves de encriptación administradas por el cliente

    Para este error… El problema podría ser… Prueba lo siguiente…
    No se encontró la cuenta de servicio por proyecto ni por producto. El nombre de la cuenta de servicio es incorrecto. Asegúrate de haber creado una cuenta de servicio para el proyecto de usuario correcto.

    IR A LA PÁGINA CUENTAS DE SERVICIO

    No se puede otorgar acceso a la cuenta de servicio. La cuenta de usuario no tiene permiso para otorgar acceso a esta versión de clave. Agrega la función de administrador de la organización a tu usuario o cuenta de servicio.

    IR A LA PÁGINA CUENTAS DE IAM

    Se destruye la versión de clave de Cloud KMS La versión de clave está destruida. Si la versión de clave se destruye, no podrás usarla para encriptar o desencriptar datos.
    Se inhabilita la versión de la clave de Cloud KMS La versión de clave está inhabilitada. Vuelve a habilitar la versión de la clave de Cloud KMS.

    IR A LA PÁGINA CLAVES CRIPTOGRÁFICAS

    Permiso insuficiente para usar la clave de Cloud KMS Falta la función cloudkms.cryptoKeyEncrypterDecrypter en el usuario o la cuenta de servicio que usas para ejecutar operaciones en instancias de Cloud SQL, o la versión de la clave de Cloud KMS no existe. Agrega la función cloudkms.cryptoKeyEncrypterDecrypter a tu usuario o cuenta de servicio.

    IR A LA PÁGINA CUENTAS DE IAM


    Si la función ya se encuentra en tu cuenta, consulta Crea una clave para aprender a crear una versión de clave nueva. Consulta la nota.
    No se encontró la clave de Cloud KMS La versión de clave no existe. Crea una versión de clave nueva. Consulta la página sobre cómo crear una clave. Consulta la nota.
    La instancia de Cloud SQL y la versión de clave de Cloud KMS se encuentran en regiones diferentes. La versión de clave de Cloud KMS y la instancia de Cloud SQL deben estar en la misma región. No funciona si la versión de clave de Cloud KMS se encuentra en una región global o multirregión. Crea una versión de clave en la misma región donde deseas crear instancias. Consulta la página sobre cómo crear una clave. Consulta la nota.