Soluciona problemas de Cloud SQL

En esta página se incluyen sugerencias para solucionar problemas de Cloud SQL relacionados con motores de bases de datos compatibles. Algunas de estas sugerencias se aplican solo a motores de bases de datos específicos, mientras que otras son comunes a todos.

A fin de obtener sugerencias para solucionar problemas de motores de bases de datos específicos, consulta sus páginas individuales:

Comprueba si tu pregunta o problema ya se abordó en una de las siguientes páginas:

Dentro de los temas que se tratan en esta página, se incluyen los siguientes:

Copia de seguridad y recuperación

Problema Soluciona problemas
No puedes ver el estado de la operación actual. La consola de Google Cloud solo informa si la operación se realizó de forma correcta o si falló. No está diseñado para mostrar advertencias ni otras actualizaciones.

Ejecuta el comando gcloud sql operations list para enumerar todas las operaciones de la instancia de Cloud SQL determinada.

Quieres averiguar quién inició una operación de copia de seguridad bajo demanda. La interfaz de usuario no muestra el usuario que inició una operación.

Busca en los registros y filtra por texto para encontrar al usuario. Es posible que debas usar registros de auditoría para obtener información privada. Los archivos de registro relevantes incluyen lo siguiente:

  • Si Registros de auditoría de Cloud está habilitado y tienes los permisos necesarios para verlo, es posible que cloudaudit.googleapis.com/activity también esté disponible.
Después de borrar una instancia, no puedes realizar una copia de seguridad de ella.

Una vez que una instancia se borra definitivamente, no es posible la recuperación de datos. Sin embargo, si se restablece la instancia, también se restablecen sus copias de seguridad. Para obtener más información sobre cómo recuperar una instancia borrada, consulta Copias de seguridad de recuperación.

Si realizaste una operación de exportación, puedes crear una instancia nueva y, luego, realizar una operación de importación para volver a crear la base de datos. Las exportaciones se escriben en Cloud Storage y las importaciones se leen desde allí.

La copia de seguridad automática se interrumpe durante muchas horas y no se puede cancelar. Las copias de seguridad pueden llevar mucho tiempo según el tamaño de la base de datos.

Si en verdad necesitas cancelar la operación, puedes pedirle a la asistencia al cliente que realice una operación de force restart para la instancia.

Una operación de restablecimiento puede fallar cuando uno o más usuarios a los que se hace referencia en el archivo de volcado de SQL no existen. Antes de restablecer un archivo de volcado de SQL, todos los usuarios de la base de datos que poseen objetos o que recibieron permisos sobre los objetos en la base de datos de volcado deben existir en la base de datos de destino. Si este no es el caso, la operación de restablecimiento no puede volver a crear los objetos con la propiedad o los permisos originales.

Crea los usuarios de la base de datos antes de restablecer el archivo de volcado de SQL.

En la actualidad, puedes conservar las copias de seguridad automáticas durante siete días, pero quieres aumentar esa cantidad de días a treinta o más. Puedes configurar la cantidad de copias de seguridad automáticas que se conservarán. Las copias de seguridad automáticas se reducen con regularidad según el valor de retención configurado. Por desgracia, esto significa que solo puedes restablecer instancias a partir de las copias de seguridad automáticas que ves en la actualidad.

Si deseas conservar las copias de seguridad de forma indefinida, puedes crear una copia de seguridad a pedido, ya que no se borran de la misma manera que las copias de seguridad automáticas. Las copias de seguridad bajo demanda permanecen de forma indefinida. Es decir, permanecen hasta que se borran o se borra la instancia a la que pertenecen. Debido a que ese tipo de copia de seguridad no se borra de forma automática, es posible que afecte la facturación.

Se produjo un error en la copia de seguridad automática y no recibiste ninguna notificación por correo electrónico. Para que Cloud SQL te notifique sobre el estado de la copia de seguridad, configura una alerta basada en registros.
Una instancia falla varias veces porque cambia entre los estados de falla y de restablecimiento de la copia de seguridad. Los intentos para conectarse y usar la base de datos después del restablecimiento fallan.
  • Es posible que haya demasiadas conexiones activas. Cuando hay demasiadas conexiones, es posible que ocurran errores en medio de una conexión en la que no hay parámetros de configuración de autovacuum para descartar las conexiones inactivas.
  • Puede generarse un ciclo si cualquier código personalizado usa una lógica de reintento que no se detiene después de algunas fallas.
  • Es posible que haya demasiado tráfico. Usa la agrupación de conexiones y otras prácticas recomendadas para la conectividad.

Solución:

  1. Verifica que la base de datos esté configurada para autovacuum.
  2. Comprueba si hay alguna lógica de reintento de conexiones configurada en el código personalizado.
  3. Disminuye el tráfico hasta que se recupere la base de datos y, luego, vuelve a aumentarlo con lentitud.
Detectas que faltan datos durante una operación de copia de seguridad o de restablecimiento. Las tablas se crearon como no registradas. Por ejemplo:

CREATE UNLOGGED TABLE ....

Estas tablas no se incluyen en un restablecimiento desde una copia de seguridad:

  • El contenido de las tablas que no están registradas no permanece vigente ante la conmutación por error en una instancia de HA.
  • Las tablas que no están registradas no superarán las fallas de postgres.
  • Las tablas que no están registradas no se replicarán en réplicas de lectura.
  • Las tablas que no están registradas se limpiarán de forma automática durante el restablecimiento de la copia de seguridad.

La solución es evitar usar tablas que no están registradas si deseas restablecer esas tablas a través de una copia de seguridad. Si realizas el restablecimiento desde una base de datos que ya tiene tablas no registradas, puedes volcar la base de datos a un archivo y volver a cargar los datos después de modificar el archivo volcado en ALTER TABLE a SET LOGGED en esas tablas.

Clonar

Problema Soluciona problemas
Si la clonación falla, se muestra el error constraints/sql.restrictAuthorizedNetworks. La configuración Authorized Networks bloquea la operación de clonación. Las Authorized Networks están configuradas para direcciones IP públicas en la sección Conectividad de la consola de Google Cloud, y la clonación no está permitida debido a consideraciones de seguridad.

Si puedes, quita todas las entradas de Authorized Networks de la instancia de Cloud SQL. De lo contrario, crea una réplica sin ninguna entrada de Authorized Networks.

Mensaje de error: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. Help Token: [help-token-id].

Estás tratando de usar la consola de Google Cloud para clonar una instancia con una dirección IP privada, pero no especificaste el rango de IP asignado que deseas usar y la instancia de origen no se crea en el rango especificado. Como resultado, la instancia clonada se crea en un rango aleatorio.

Usa gcloud a fin de clonar la instancia y proporcionar un valor para el parámetro
--allocated-ip-range-name. Para obtener más información, consulta Clona una instancia con una IP privada.

Conectar

Problema Soluciona problemas
Aborted connection. Posible problema:
  • Hay inestabilidad en las herramientas de redes.
  • No hay respuesta a los comandos keep-alive de TCP (el cliente o el servidor no responden, es posible que estén sobrecargados).
  • Se excedió el ciclo de vida de la conexión del motor de base de datos y el servidor finalizó la conexión.

Las aplicaciones deben tolerar fallas de red y seguir prácticas recomendadas, como la agrupación de conexiones y los reintentos. La mayoría de los agrupadores de conexiones detectan estos errores siempre que sea posible. De lo contrario, la aplicación debe reintentar o fallar de manera controlada.

Para los reintentos de conexión, recomendamos los siguientes métodos:

  1. Retirada exponencial Aumenta el intervalo de tiempo entre cada reintento de manera exponencial.
  2. Agrega una retirada aleatoria.

La combinación de estos métodos ayuda a reducir la limitación.

FATAL: database 'user' does not exist. gcloud sql connect --user solo funciona con el usuario predeterminado postgres.

Conéctate con el usuario predeterminado y, luego, cambia de usuario.

Quieres saber quién está conectado. Accede a la base de datos y ejecuta este comando:

SELECT datname,
usename,
application_name as appname,
client_addr,
state,
now() - backend_start as conn_age,
now() - state_change as last_activity_age
FROM pg_stat_activity
WHERE backend_type = 'client backend'
ORDER BY 6 DESC
LIMIT 20
   

Crea instancias

Problema Soluciona problemas
Mensaje de error: Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID]. Vuelve a crear la instancia de Cloud SQL.
Mensaje de error: Failed to create subnetwork. Required 'compute.projects.get' permission for PROJECT_ID. Cuando creas una instancia mediante una dirección IP privada, se crea una cuenta de servicio a tiempo con la API de Service Networking. Si solo habilitaste recientemente la API de Service Networking, es posible que la cuenta de servicio no se cree y la creación de la instancia falle. En este caso, debes esperar a que la cuenta de servicio se propague en todo el sistema o agregarla de forma manual con los permisos necesarios.

Exportar

Problema Soluciona problemas
HTTP Error 409: Operation failed because another operation was already in progress. Ya existe una operación pendiente para la instancia. Solo se permite una operación a la vez. Prueba tu solicitud después de que se complete la operación actual.
HTTP Error 403: The service account does not have the required permissions for the bucket. Asegúrate de que el bucket exista y que la cuenta de servicio de la instancia de Cloud SQL (que realiza la exportación) tenga el rol Storage Object Creator (roles/storage.objectCreator) para permitir la exportación al bucket. Consulta Roles de IAM para Cloud Storage.
La exportación de archivos CSV se completó, pero la exportación de SQL falló. Los formatos CSV y SQL se exportan de manera diferente. El formato SQL exporta la base de datos completa, y es probable que esta operación tome más tiempo para completarse. El formato CSV te permite definir qué elementos de la base de datos incluir en la exportación.

Usa las exportaciones de archivos CSV para exportar solo lo que necesites.

La exportación está tomando demasiado tiempo. Cloud SQL no admite operaciones síncronas simultáneas.

Usa la descarga de exportación. En un nivel alto, en la descarga de exportación, en lugar de emitir una exportación en la instancia de origen, Cloud SQL inicia una instancia de descarga para realizar la exportación. La descarga de la exportación tiene varias ventajas, como el aumento del rendimiento en la instancia de origen y el bloqueo de las operaciones administrativas mientras se ejecuta la exportación. Con la descarga de la exportación, la latencia total puede aumentar en función del tiempo que lleva activar la instancia de descarga. Por lo general, para exportaciones con un tamaño razonable, la latencia no es significativa. Sin embargo, si la exportación es lo suficientemente pequeña, es posible que notes un aumento en la latencia.

Se produjo un error cuando se creó la extensión. En el archivo de volcado, se hace referencia a una extensión que no es compatible.

Edita el archivo de volcado para quitar las referencias.

Se produjo un error cuando se usó pg_dumpall. El uso de la utilidad pg_dumpall con la marca --global requiere la función de superusuario, pero esta función no es compatible con Cloud SQL. Para evitar que se produzcan errores mientras se realizan operaciones de exportación que incluyen nombres de usuario, también usa la marca --no-role-passwords.
Se agota el tiempo de espera de la operación de exportación antes de exportar algo y ves el mensaje de error Could not receive data from client: Connection reset by peer.. Si Cloud Storage no recibe ningún dato en un período determinado, por lo general, alrededor de siete minutos, la conexión se restablece. Es posible que la consulta de exportación inicial esté tardando demasiado en ejecutarse.

Realiza una exportación manual con la herramienta pg_dump.

Deseas que las exportaciones sean automáticas. Cloud SQL no proporciona una forma de automatizar las exportaciones.

Podrías compilar tu propio sistema de exportación automatizado mediante el uso de productos de Google Cloud, como Cloud Scheduler, Pub/Sub y funciones de Cloud Run, similar a este artículo sobre cómo automatizar las copias de seguridad.

Instancia principal externa

Problema Soluciona problemas
Lost connection to MySQL server during query when dumping table. Es posible que el origen haya dejado de estar disponible o que el volcado contenga paquetes demasiado grandes.

Asegúrate de que la instancia principal externa esté disponible para conectarse. También puedes modificar los valores de las marcas net_read_timeout y net_write_timeout en la instancia de origen para detener el error. Para obtener más información sobre los valores permitidos para estas marcas, consulta Configura marcas de base de datos.

Si deseas obtener más información sobre el uso de marcas de mysqldump para la migración de importaciones administradas, consulta Marcas de sincronización iniciales permitidas y predeterminadas.

La migración inicial de los datos se realizó de forma correcta, pero no se están replicando los datos. Una causa raíz podría ser que la base de datos de origen haya definido marcas de replicación que den como resultado que no se repliquen algunos o todos los cambios de la base de datos.

Asegúrate de que las marcas de replicación, como binlog-do-db, binlog-ignore-db, replicate-do-db o replicate-ignore-db, no estén configuradas de manera conflictiva.

Ejecuta el comando show master status en la instancia principal para ver la configuración actual.

La migración inicial de los datos se realizó de forma correcta, pero la réplica de datos dejó de funcionar después de un tiempo. Solución:

  • Verifica las métricas de réplica para la instancia de réplica en la sección Cloud Monitoring de la consola de Google Cloud.
  • Los errores del subproceso de IO de MySQL o el de SQL se pueden encontrar en Cloud Logging en los archivos mysql.err log.
  • El error también se puede encontrar cuando te conectas a la instancia de réplica. Ejecuta el comando SHOW SLAVE STATUS y verifica los siguientes campos en el resultado:
    • Slave_IO_Running
    • Slave_SQL_Running
    • Last_IO_Error
    • Last_SQL_Error
mysqld check failed: data disk is full. El disco de datos de la instancia de réplica está lleno.

Aumenta el tamaño del disco de la instancia de réplica. Puedes aumentar el tamaño del disco de forma manual o habilitar el aumento de almacenamiento automático.

Réplica externa

Problema Soluciona problemas
Mensaje de error: The slave is connecting ... master has purged binary logs containing GTIDs that the slave requires. La instancia principal de Cloud SQL tiene copias de seguridad automáticas y registros binarios, y está habilitada la recuperación de un momento determinado, por lo que debería tener suficientes registros para que la réplica pueda ponerse al día. Sin embargo, en este caso, a pesar de que existen los registros binarios, la réplica no sabe desde qué fila debe comenzar a leer.

Crea un nuevo archivo de volcado con la configuración correcta de la marca y configura la réplica externa con ese archivo

  1. Conéctate a tu cliente MySQL a través de una instancia de Compute Engine.
  2. Ejecuta mysqldump y usa las marcas --master-data=1 y --flush-privileges.

    Importante: No incluyas la marca --set-gtid-purged=OFF.

    Obtén más información

  3. Asegúrate de que el archivo de volcado que se creó contenga la línea SET @@GLOBAL.GTID_PURGED='...'.
  4. Sube el archivo de volcado a un bucket de Cloud Storage y configura la réplica con el archivo de volcado.

Marcas

Problema Soluciona problemas

Alta disponibilidad

Problema Soluciona problemas
No puedes encontrar las métricas de una conmutación por error manual. Solo las conmutaciones por error automáticas se incluyen en las métricas.
Los recursos de la instancia de Cloud SQL (CPU y RAM) tienen un uso de alrededor del 100%, lo que hace que se interrumpa el funcionamiento de la instancia con alta disponibilidad. El tamaño de la máquina de la instancia es demasiado pequeño para la carga.

Edita la instancia para actualizarla a un tamaño de máquina más grande y obtener más CPU y memoria.

Importar

Problema Soluciona problemas
HTTP Error 409: Operation failed because another operation was already in progress Ya existe una operación pendiente para la instancia. Solo se permite una operación a la vez. Prueba tu solicitud después de que se complete la operación actual.
La operación de importación está tomando demasiado tiempo. Hay demasiadas conexiones activas que pueden interferir en las operaciones de importación.

Cierra las operaciones sin usar. Verifica el uso de CPU y memoria de la instancia de Cloud SQL para asegurarte de que haya muchos recursos disponibles. La mejor manera de garantizar la cantidad máxima de recursos para la importación es reiniciar la instancia antes de comenzar la operación.

Cuando se realiza un reinicio, sucede lo siguiente:

  • Se cierran todas las conexiones.
  • Finaliza cualquier tarea que pueda consumir recursos.
Una operación de importación puede fallar cuando uno o más usuarios a los que se hace referencia en el archivo de volcado no existen. Antes de importar un archivo de volcado, todos los usuarios de la base de datos que poseen objetos o que recibieron permisos sobre los objetos en la base de datos de volcado deben existir en la base de datos de destino. Si este no es el caso, la operación de importación no puede volver a crear los objetos con la propiedad o los permisos originales.

Crea los usuarios de la base de datos antes de realizar la importación.

Una operación de importación falla y se muestra un error que indica que una tabla no existe. Las tablas pueden tener dependencias de clave externa en otras tablas y, según el orden de las operaciones, es posible que una o más de esas tablas aún no existan durante la operación de importación.

Solución:

Agrega la siguiente línea al comienzo del archivo de volcado:

SET FOREIGN_KEY_CHECKS=0;
  

Además, agrega esta línea al final del archivo de volcado:

SET FOREIGN_KEY_CHECKS=1;
  

Por medio de configuración, se desactivan las verificaciones de integridad de los datos mientras la operación de importación está en curso y se las vuelve a activar después de que se cargan los datos. Esto no afecta la integridad de los datos en la base de datos, ya que se validaron durante la creación del archivo de volcado.

Integración en Vertex AI

Problema Soluciona problemas
Mensaje de error: Google ML integration API is supported only on Postgres version 12 or above. Para habilitar la integración de Vertex AI en Cloud SQL, debes tener una base de datos de Cloud SQL para PostgreSQL, versión 12 o posterior. Para actualizar tu base de datos a esta versión, consulta Actualiza la versión principal de la base de datos de manera local.
Mensaje de error: Google ML Integration API is not supported on shared core instance. Please upsize your machine type. Si seleccionaste un núcleo compartido para el tipo de máquina de tu instancia, no puedes habilitar la integración de Vertex AI en Cloud SQL. Actualiza tu tipo de máquina a un núcleo dedicado. Para obtener más información, consulta Tipo de máquina.
Mensaje de error: Google ML Integration is unsupported for this maintenance version. Please follow https://cloud.google.com/sql/docs/postgres/self-service-maintenance to update the maintenance version of the instance. Para habilitar la integración de Vertex AI en Cloud SQL, la versión de mantenimiento de tu instancia debe ser R20240130 o posterior. Para actualizar tu instancia a esta versión, consulta Mantenimiento de autoservicio.
Mensaje de error: Cannot invoke ml_predict_row if 'cloudsql.enable_google_ml_integration' is off. La marca de la base de datos cloudsql.enable_google_ml_integration está desactivada. Cloud SQL no se puede integrar en Vertex AI.

Para activar esta marca, usa el comando gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME --database-flags cloudsql.enable_google_ml_integration=on

Reemplaza INSTANCE_NAME por el nombre de la instancia principal de Cloud SQL.
Mensaje de error: Failed to connect to remote host: Connection refused. La integración entre Cloud SQL y Vertex AI no está habilitada. Para habilitar esta integración, usa el comandogcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME
--enable-google-ml-integration


ReemplazarINSTANCE_NAME por el nombre de la instancia principal de Cloud SQL.
Mensaje de error: Vertex AI API has not been used in project PROJECT_ID before or it is disabled. Enable it by visiting /apis/api/aiplatform.googleapis.com/overview?project=PROJECT_ID then retry. La API de Vertex AI no está habilitada. Para obtener más información sobre cómo habilitar esta API, consulta Habilita la integración de la base de datos con Vertex AI.
Mensaje de error: Permission 'aiplatform.endpoints.predict' denied on resource. Los permisos de Vertex AI no se agregan a la cuenta de servicio de Cloud SQL para el proyecto en el que se encuentra la instancia de Cloud SQL. Para obtener más información sobre cómo agregar estos permisos a la cuenta de servicio, consulta Habilita la integración de la base de datos con Vertex AI.
Mensaje de error: Publisher Model `projects/PROJECT_ID/locations/REGION_NAME/publishers/google/models/MODEL_NAME` not found. El modelo de aprendizaje automático o el LLM no existen en Vertex AI.
Mensaje de error: Resource exhausted: grpc: received message larger than max. El tamaño de la solicitud que Cloud SQL pasa a Vertex AI supera el límite de gRPC de 4 MB por solicitud.
Mensaje de error: Cloud SQL attempts to send a request to Vertex AI. However, the instance is in the %s region, but the Vertex AI endpoint is in the %s region. Make sure the instance and endpoint are in the same region. Cloud SQL intenta enviar una solicitud a Vertex AI. Sin embargo, la instancia está en una región, pero el extremo de Vertex AI está en una región diferente. Para resolver este problema, la instancia y el extremo deben estar en la misma región.
Mensaje de error: The Vertex AI endpoint isn't formatted properly. El extremo de Vertex AI no tiene el formato correcto. Si deseas obtener más información, consulta Usa extremos privados para la predicción en línea.
Mensaje de error: Quota exceeded for aiplatform.googleapis.com/online_prediction_requests_per_base_model with base model: textembedding-gecko. La cantidad de solicitudes que Cloud SQL pasa a Vertex AI supera el límite de 1,500 solicitudes por minuto, por región, por modelo y por proyecto.

Servidores vinculados

Mensaje de error Soluciona problemas
Msg 7411, Level 16, State 1, Line 25

Server 'LINKED_SERVER_NAME' is not configured for DATA ACCESS.
La opción DataAccess está inhabilitada. Ejecuta el siguiente comando para habilitar el acceso a los datos:
EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='data access',
    @optvalue='TRUE'

Reemplaza LINKED_SERVER_NAME por el nombre del servidor vinculado.

Access to the remote server is denied because no login-mapping exists. (Microsoft SQL Server, Error: 7416) Si tienes este problema cuando estableces una conexión encriptada, debes probar otra forma de proporcionar el ID de usuario cuando accedes al servidor vinculado. Para hacer esto, ejecuta el siguiente comando:
EXEC master.dbo.sp_addlinkedserver
   @server = N'LINKED_SERVER_NAME',
   @srvproduct= N'',
   @provider= N'SQLNCLI',
   @datasrc= N'TARGET_SERVER_ID',
   @provstr= N'Encrypt=yes;TrustServerCertificate=yes;User ID=USER_ID'

Reemplaza lo siguiente:

  • LINKED_SERVER_NAME por el nombre del servidor vinculado.
  • TARGET_SERVER_ID por el nombre del servidor de destino o la dirección IP y el número de puerto para el servidor de destino.
  • USER_ID por el acceso del usuario.

Logging

Problema Soluciona problemas
No se encuentran los registros de auditoría. Los registros de acceso a datos solo se escriben si la operación es una llamada a la API controlada por el usuario y autenticada que crea, modifica o lee datos creados por el usuario, o si la operación accede a metadatos o archivos de configuración de recursos.
No se encontró información de operaciones en los registros. Deseas encontrar más información sobre una operación.

Por ejemplo, se borró un usuario, pero no puedes averiguar quién lo hizo. Los registros muestran que la operación inició, pero no proporcionan más información. Debes habilitar el registro de auditoría para que se registre este tipo de información de identificación personal (PII) detallada.

Algunos registros se filtran del registro error.log de una instancia de Cloud SQL para SQL Server. En los registros filtrados, se incluyen los registros de AD sin marcas de tiempo y se incluye lo siguiente: Login failed for user 'x'. Reason: Token-based server access validation failed with an infrastructure error. Login lacks connect endpoint permission. [CLIENT: 127.0.0.1]. Estos registros se filtran porque existe la posibilidad de que causen confusión.
El registro usa mucho espacio en disco. Hay tres tipos de archivos de registro que usan espacio en disco: registros de rehacer, registros generales y registros binarios.

Conéctate a la base de datos y ejecuta estos comandos para obtener detalles sobre cada tipo:

SHOW VARIABLES LIKE 'innodb_log_file%';

SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2),2)
AS GB from mysql.general_log;

SHOW BINARY LOGS;
    
Los archivos de registro son difíciles de leer Prefieres ver los registros en formato JSON o de texto: puedes usar el comando gcloud logging read junto con los comandos de procesamiento posterior de Linux para descargar los registros.

Para descargar los registros en formato JSON, sigue estos pasos:

gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format json \
--project=PROJECT_ID \
--freshness="1d" \
> downloaded-log.json
    

Para descargar los registros como TEXT, sigue estos pasos:

gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format json \
--project=PROJECT_ID \
--freshness="1d"| jq -rnc --stream 'fromstream(1|truncate_stream(inputs)) \
| .textPayload' \
--order=asc
> downloaded-log.txt
   
Los registros de consultas no se encuentran en los registros de PostgreSQL. Debes habilitar las marcas de pgaudit.
  1. Desde una terminal, conéctate a tu base de datos:
    gcloud sql connect INSTANCE_NAME
          
  2. Ejecuta este comando para crear la extensión:
    CREATE EXTENSION pgaudit;
          
  3. Sal de la base de datos y ejecuta el siguiente comando en una terminal:
    gcloud sql instances patch INSTANCE_NAME \
    --database-flags=cloudsql.enable_pgaudit=on,pgaudit.log=all
         

Administrar instancias

Problema Soluciona problemas
Rendimiento lento después de reiniciar MySQL. Cloud SQL permite el almacenamiento en caché de datos en el grupo de búferes de InnoDB. Sin embargo, después de un reinicio, esta caché siempre está vacía, y todas las lecturas requieren un recorrido de ida y vuelta al backend para obtener datos. Como resultado, las consultas pueden ser más lentas de lo esperado hasta que se llene la caché.
La recuperación ante fallas es lenta. Es posible que se haya acumulado un general_log de gran tamaño. Puedes evitar que se acumule un general_log de gran tamaño para reducir el tiempo de recuperación ante fallas. Si tienes la opción general_log activada, trunca la tabla y habilita general_log solo durante períodos breves.

Para averiguar el tamaño de los registros generales, conéctate a la base de datos y ejecuta esta consulta:

SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2)),2) from mysql.general_log;
Deseas averiguar qué está usando el almacenamiento. Por ejemplo, notaste que tu base de datos usa solo 3 Gb, pero el almacenamiento indica que se usan 14 Gb. Los registros binarios o los archivos temporales usan la mayor parte del espacio que no usan las tablas.

Solución:

  • Puedes verificar el almacenamiento ocupado por registros binarios mediante el siguiente comando en la interfaz de línea de comandos de MySQL: SHOW BINARY LOGS;
  • Las tablas temporales también pueden ocupar una cantidad significativa de espacio de almacenamiento. Para verificar el uso del espacio temporal, usa el siguiente comando: SELECT * FROM INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME='innodb_temporary'\G.
  • Con el siguiente comando, podrás verificar el tamaño del registro de rehacer: SHOW VARIABLES LIKE 'innodb_log_file%';
  • Puedes comprobar el tamaño de general_log, si está habilitado, con la ayuda de este comando: SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2)),2) AS GB from mysql.general_log;
  • Si es necesario, puedes usar la API para truncar las tablas de registro. Para obtener más información, consulta la página de referencia de instances.truncateLog.
  • Obtén más información sobre cómo configurar y establecer los registros de consultas lentas.
Las consultas están bloqueadas. Es posible que las consultas bloqueen la base de datos de MySQL, lo que hace que todas las consultas posteriores se bloqueen o agoten el tiempo de espera.

Conéctate a la base de datos y ejecuta esta consulta:

SHOW PROCESSLIST.

El primer elemento de la lista puede ser el que está provocando el bloqueo, lo que mantiene en espera a los elementos posteriores.

La consulta SHOW INNODB STATUS también puede ser útil.

No puedes borrar de forma manual los registros binarios. Los registros binarios no se pueden borrar de forma manual. Los registros binarios y la copia automática de seguridad que se asocia a ellos se borran de manera automática. Por lo general, esto ocurre luego de siete días.
Deseas encontrar información sobre los archivos temporales. Se usa un archivo llamado ibtmp1 para almacenar datos temporales. Este archivo se restablece cuando se reinicia la base de datos. Para encontrar información sobre el uso de archivos temporales, conéctate a la base de datos y ejecuta la siguiente consulta:

SELECT * FROM INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME='innodb_temporary'\G

Deseas obtener información sobre los tamaños de las tablas. Esta información está disponible en la base de datos.

Conéctate a la base de datos y ejecuta la siguiente consulta:

SELECT TABLE_SCHEMA, TABLE_NAME, sum(DATA_LENGTH+INDEX_LENGTH)/pow(1024,2) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA NOT IN ('PERFORMANCE_SCHEMA','INFORMATION_SCHEMA','SYS','MYSQL') GROUP BY TABLE_SCHEMA, TABLE_NAME;

mysqld recibió una señal 11. Intenta refactorizar las consultas para que no creen demasiadas conexiones. Si eso no resuelve el problema, comunícate con la asistencia al cliente. Por lo general, la señal 11 representa un problema del software de MySQL.

InnoDB: page_cleaner: 1000ms intended loop took 5215ms. The settings might not be optimal. El limpiador de la página no puede seguir el ritmo de la velocidad de cambio en la instancia. Una vez por segundo, el limpiador de la página analiza el grupo de búferes en busca de páginas sucias para enviar del grupo de búferes al disco. La advertencia muestra que tiene muchas páginas sucias que se van a enviar, y la limpieza de los lotes al disco está tomando más de un segundo.

Si es posible, fragmenta la instancia. Usar muchas instancias de Cloud SQL más pequeñas es mejor que una instancia grande.

Deseas averiguar qué consultas se están ejecutando en este momento. Conéctate a la base de datos y ejecuta la siguiente consulta:

SELECT datname, usename, application_name as appname, client_addr, state, now() - backend_start as conn_age, now() - xact_start as xact_age, now() - query_start as query_age, now() - state_change as last_activity_age, wait_event_type, wait_event, query FROM pg_stat_activity WHERE state <> 'idle' ORDER BY 8 DESC LIMIT 20;

Deseas averiguar qué unidades se usan para un campo específico. Conéctate a la base de datos y ejecuta la siguiente consulta (mediante tu propio FIELD_NAME):

SELECT name, setting, unit FROM pg_settings WHERE name = 'FIELD_NAME'.

Deseas encontrar el valor actual de una configuración de base de datos. Conéctate a la base de datos y ejecuta la siguiente consulta (mediante tu propio SETTING_NAME):

SHOW SETTING_NAME;

Ejecuta SHOW ALL; para ver toda la configuración.

Deseas detener un proceso en segundo plano bloqueado. El usuario debe tener la función pg_signal_backend.

Ejecute los siguientes comandos:

  1.       GRANT pg_signal_backend TO USERNAME;
          
  2. Busca el ID de proceso del proceso bloqueado o atascado:
          SELECT pid, usename, state, query FROM pg_stat_activity;
          
  3. Detén un proceso inactivo o en ejecución con los siguientes comandos:
          SELECT pg_cancel_backend(pid)
                FROM pg_stat_activity
                WHERE usename = 'USERNAME';
          
          
          SELECT pg_terminate_backend(pid)
                FROM pg_stat_activity
                WHERE usename = 'USERNAME';
          
          
La instancia está por alcanzar el 100% de consumo de los ID de transacción. La supervisión interna advierte que la instancia está por alcanzar el 100% del consumo de los ID de transacción. Deseas evitar el ajuste de la transacción, que puede bloquear las escrituras.

Es posible que el trabajo de autovacuum esté bloqueado o no reclame los ID de transacción lo suficientemente rápido como para mantenerse al día con la carga de trabajo.

Para evitar interrupciones por un problema de ajuste de transacción, puedes revisar estas sugerencias de autoservicio para abordar el ajuste del ID de transacción.

Para obtener asesoramiento general sobre ajustes, consulta Optimiza, supervisa y soluciona problemas de operaciones de vacuum en PostgreSQL.

El almacenamiento temporal aumentó el almacenamiento automático. El almacenamiento automático está habilitado.

El proceso de reinicio borra los archivos temporales, pero no reduce el almacenamiento. Solo la asistencia al cliente puede restablecer el tamaño de la instancia.

Los datos se borran de manera automática. Lo más probable es que se esté ejecutando una secuencia de comandos en algún lugar de tu entorno.

Revisa los registros correspondientes al momento de la eliminación y verifica si hay una secuencia de comandos sospechosa en ejecución desde un panel o algún otro proceso automatizado.

No se puede borrar la instancia. Verás el mensaje de error ERROR: (gcloud.sql.instances.delete) HTTP Error 409: The instance or operation is not in an appropriate state to handle the request, o la instancia puede tener un estado de la marca INSTANCE_RISKY_FLAG_CONFIG.

Estas son algunas explicaciones posibles:

  • Hay otra operación en curso. Las operaciones de Cloud SQL no se ejecutan en simultáneo. Espera a que se complete la otra operación.
  • La advertencia INSTANCE_RISKY_FLAG_CONFIG se activa cada vez que se usa al menos una marca beta. Quita la configuración de marca riesgosa y reinicia la instancia.
La instancia está interrumpida debido al gran tamaño de los datos temporales. El sistema puede crear muchas tablas temporales a la vez, según las consultas y la carga.

Por desgracia, no puedes reducir el archivo ibtmp1 con ningún otro método que no sea reiniciar el servicio.

Una opción de mitigación es crear la tabla temporal con ROW_FORMAT=COMPRESSED, de modo que se almacene en espacios de tablas del tipo archivo por tabla en el directorio de archivos temporales. Sin embargo, la desventaja son los costos de rendimiento asociados con la creación y eliminación de un espacio de tabla del tipo archivo por tabla para cada tabla temporal.

Se produjo un error grave durante la actualización. Los registros pueden revelar más, pero, de todos modos, es posible que se necesite la asistencia al cliente para forzar la recreación de la instancia.
La instancia se interrumpe cuando se reinicia después de quedarse sin espacio en el disco. La función de aumento del almacenamiento automático no está habilitada.

Si la instancia se queda sin almacenamiento y la capacidad de aumento de almacenamiento automático no está habilitada, tu instancia se desconecta. Para evitar este problema, puedes editar la instancia a fin de habilitar el aumento de almacenamiento automático.

Tu instancia principal local está atascada. Google Cloud no puede ayudar con las instancias que no están en Cloud SQL.
El proceso de apagado es lento durante el reinicio. Cuando una instancia se cierra, cualquier conexión pendiente que no finalice en 60 segundos hace que el cierre sea poco claro.

Si se usan conexiones que duran menos de 60 segundos, se pueden evitar la mayoría de los apagados inestables, incluidas las conexiones del símbolo del sistema de la base de datos. Si mantienes estas conexiones activas durante horas o días, es posible que los procesos de apagado sean inestables.

No se puede borrar un usuario. Es posible que el usuario tenga objetos que dependen de él en la base de datos. Debes descartar esos objetos o reasignarlos a otro usuario.

Averigua qué objetos dependen del usuario y, luego, descártalos o reasígnalos a un usuario diferente.

Hay consultas específicas que se ejecutan con lentitud. Las consultas pueden ser lentas por muchos motivos, la mayoría relacionados con aspectos específicos de la base de datos. Un motivo que puede involucrar a Cloud SQL es la latencia de red, cuando el recurso de origen (escritor o lector) y el recurso de destino (Cloud SQL) están en diferentes regiones.

Consulta las sugerencias para un mejor rendimiento general, en particular, las siguientes.

Para inserciones, actualizaciones o eliminaciones lentas de la base de datos, considera las siguientes acciones:

  • Verifica las ubicaciones del escritor y de la base de datos. El envío de datos a larga distancia provoca latencia.
  • 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.

Para reducir la latencia, se recomienda ubicar los recursos de origen y de destino en la misma región.

Se indica que hay falta de memoria, pero esto no se muestra en los gráficos de supervisión. Una instancia puede fallar e informar Out of memory, pero los gráficos de la consola de Google Cloud o Cloud Monitoring parecen mostrar que aún hay memoria.

Existen otros factores que pueden afectar el uso de memoria además de la carga de trabajo, como la cantidad de conexiones activas y los procesos de sobrecarga interna. Esto no siempre se refleja en los gráficos de supervisión.

Asegúrate de que la instancia tenga suficiente sobrecarga para cubrir la carga de trabajo además de algo de sobrecarga adicional.

Recupera una instancia borrada. Cuando se borra una instancia, todos sus datos, incluidas las copias de seguridad, se pierden de forma permanente.

Para conservar tus datos, expórtalos a Cloud Storage antes de borrar una instancia.

La función de administrador de Cloud SQL incluye el permiso para borrar la instancia. Para evitar la eliminación accidental, otorga esta función solo cuando sea necesario.

Cambia el nombre de una instancia de Cloud SQL existente. No se admite el cambio de nombre de una instancia existente.

Hay otras formas de lograr el objetivo mediante la creación de una instancia nueva.

  • Puedes clonar la instancia que deseas renombrar y establecer un nombre nuevo para la instancia clonada. Esto te permite crear la instancia nueva sin tener que importar datos de forma manual. Al igual que cuando se crea una instancia nueva, la instancia clonada tiene una dirección IP nueva.
  • Puedes exportar datos de tu instancia a un depósito de Cloud Storage, crear una instancia nueva con el nombre nuevo que desees y, luego, importar los datos en la instancia nueva.

En ambos casos, puedes borrar la instancia anterior después de que finalice la operación. Recomendamos seguir la ruta de clonación, ya que no afecta el rendimiento y no requiere que vuelvas a configurar la instancia, como las marcas, el tipo de máquina, el tamaño de almacenamiento y la memoria.

Se produjo un error cuando se borraba una instancia. Si la protección contra la eliminación está habilitada para una instancia, confirma tus planes de borrarla. Luego, inhabilita la protección contra la eliminación antes de borrar la instancia.

Private Service Connect

Problema Soluciona problemas
El adjunto de servicio de la instancia no acepta el extremo de Private Service Connect.
  1. Verifica el estado del extremo.

    gcloud

    Para verificar el estado, usa el comando
    gcloud compute forwarding-rules describe.

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    | grep pscConnectionStatus

    Realiza los siguientes reemplazos:

    • ENDPOINT_NAME: el nombre del extremo
    • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo
    • REGION_NAME: el nombre de la región para el extremo

    REST

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo de Private Service Connect
    • REGION_NAME: es el nombre de la región.
    • ENDPOINT_NAME: el nombre del extremo

    Método HTTP y URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
      "kind": "compute#forwardingRule",
      "id": "ENDPOINT_ID",
      "creationTimestamp": "2024-05-09T12:03:21.383-07:00",
      "name": "ENDPOINT_NAME",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "IPAddress": "IP_ADDRESS",
      "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
      "serviceDirectoryRegistrations": [
        {
          "namespace": "goog-psc-default"
        }
      ],
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "fingerprint": "FINGERPRINT_ID",
      "pscConnectionId": "CONNECTION_ID",
      "pscConnectionStatus": "ACCEPTED",
      "allowPscGlobalAccess": true
    }
    
  2. Verifica que el estado del extremo sea ACCEPTED. Si el estado es PENDING, la instancia no permite el proyecto de Google Cloud que contiene el extremo. Asegúrate de que el proyecto de red en el que se crea el extremo esté permitido. Para obtener más información, consulta Edita una instancia con Private Service Connect habilitado.

Replicación

Problema Soluciona problemas
La réplica de lectura no comenzó a replicarse cuando se creó. Es probable que haya un error más específico en los archivos de registro. Inspecciona los registros en Cloud Logging para encontrar el error real.
No se puede crear una réplica de lectura: error invalidFlagValue. Una de las marcas de la solicitud no es válida. Puede ser una marca que proporcionaste explícitamente o una que se configuró como un valor predeterminado.

Primero, comprueba que el valor de la marca max_connections sea mayor o igual que el valor en el principal.

Si la marca max_connections se configuró de forma correcta, inspecciona los registros en Cloud Logging para encontrar el error real.

No se puede crear una réplica de lectura: error desconocido. Es probable que haya un error más específico en los archivos de registro. Inspecciona los registros en Cloud Logging para encontrar el error real.

Si el error es set Service Networking service account as servicenetworking.serviceAgent role on consumer project, inhabilita y vuelve a habilitar la Service Networking API. Esta acción crea la cuenta de servicio que se necesita para continuar con el proceso.

El disco está lleno. El tamaño del disco de la instancia principal puede llenarse durante la creación de una réplica. Edita la instancia principal para actualizarla a un tamaño de disco más grande.
La instancia de réplica usa demasiada memoria. La réplica usa memoria temporal para almacenar en caché las operaciones de lectura solicitadas con frecuencia, lo que puede ocasionar que use más memoria que la instancia principal.

Reinicia la instancia de réplica para recuperar el espacio de memoria temporal.

Se detuvo la replicación. Se alcanzó el límite de almacenamiento máximo y el aumento de almacenamiento automático no está habilitado.

Edita la instancia para habilitar automatic storage increase.

El retraso de replicación se mantiene alto. La carga de escritura es demasiado alta para que la réplica la maneje. El retraso de la replicación se produce cuando el subproceso de SQL en una réplica no puede mantener el ritmo del subproceso de E/S. Algunos tipos de consultas o cargas de trabajo pueden causar un gran retraso de la replicación de forma temporal o permanente en un esquema determinado. Algunas de las causas típicas del retraso de la replicación son las siguientes:
  • Consultas lentas en la réplica. Encuéntralas y corrígelas.
  • Todas las tablas deben tener una clave primaria o única. Cada actualización en una tabla sin una clave única o primaria genera análisis completos de la tabla en la réplica.
  • Las consultas como DELETE ... WHERE field < 50000000 provocan un retraso de la replicación basado en filas, ya que se acumula una gran cantidad de actualizaciones en la réplica.

Estas son algunas de las soluciones posibles:

  • Edita la instancia para aumentar el tamaño de la réplica.
  • Reduce la carga en la base de datos.
  • Envía tráfico de lectura a la réplica de lectura.
  • Indexa las tablas.
  • Identifica y corrige consultas de escritura lentas.
  • Vuelve a crear la réplica.
La creación de la réplica falla con el tiempo de espera. Las transacciones no confirmadas de larga duración en la instancia principal pueden generar una falla en la creación de la réplica de lectura.

Vuelve a crear la réplica después de detener todas las consultas en ejecución.