Solución de problemas

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:

  • cloudsql.googleapis.com/postgres.log
  • 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 30 o más. Puedes configurar la cantidad de copias de seguridad automáticas que se conservarán, de 1 a 365. 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.

Cancela la importación y exportación

Problema Soluciona problemas
Mensaje de error: You can't cancel operation [operation-ID] because this operation isn't in progress.

Intentas cancelar una operación de importación o exportación que se completó, falló o canceló. Si la operación se está ejecutando, puedes cancelarla.

Mensaje de error: You can't cancel operation [operation-ID] because Cloud SQL doesn't support the cancellation of an [operation-type] operation.

Cloud SQL no admite la cancelación de la operación porque tiene un tipo de operación que no sea IMPORT ni EXPORT.

Mensaje de error: The [operation-type] operation isn't cancelled. Wait and retry in a few seconds.

En este momento, Cloud SQL no puede cancelar la operación de importación o exportación. Vuelve a intentarlo en unos segundos. Si el problema persiste, comunícate con la asistencia de Google Cloud.

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.

Certificate verify failed.

Los certificados de cliente vencieron o la ruta a los certificados no es correcta.

Para volver a generar los certificados, vuelve a crearlos.

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
   

Hostname/IP does not match certificate's altnames: Host: localhost. is not in the cert's altnames.

La dirección del host no coincide con la dirección de los nombres alternativos del certificado de servidor.

Si usas Node.js con verify-full o su equivalente, usa el nombre de DNS para el parámetro servername. El nombre de DNS se puede encontrar en el certificado de servidor con openssl. Por ejemplo, openssl x509 -in server-cert.pem -noout -text |grep 'DNS:'.

 ssl: {
  rejectUnauthorized: true,
  ca: fs.readFileSync("/path/to/server/CA"),
  servername: 'N-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx.us-central1.sql.goog'
}

Crea instancias

Problema Soluciona problemas
Mensaje de error: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. No hay más direcciones disponibles en el rango de IP asignado. Puede haber varias situaciones posibles:

  • El tamaño del rango de IP asignado para la conexión privada a servicios es menor que /24.
  • El tamaño del rango de IP asignado para la conexión privada a servicios es demasiado pequeño para la cantidad de instancias de Cloud SQL.
  • El requisito de tamaño del rango de IP asignado será mayor si las instancias se crean en varias regiones. Consulta Tamaño del rango asignado

Para resolver este problema, puedes expandir el rango de IP asignado existente o asignar un rango de IP adicional a la conexión privada a servicios. Para obtener más información, consulta Asigna un rango de direcciones IP.

Si usaste la marca --allocated-ip-range-name mientras creaste la instancia de Cloud SQL, solo puedes expandir el rango de IP especificado.

Si asignas un nuevo rango, ten cuidado de no crear una asignación que se superponga con cualquier asignación existente.

Después de crear un nuevo rango de IP, actualiza el intercambio de tráfico de VPC con el siguiente comando:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
    

Si expandes una asignación existente, asegúrate de aumentar solo el rango de asignación y no disminuirlo. Por ejemplo, si la asignación original era 10.0.10.0/24, realiza la nueva asignación de 10.0.10.0/23 como mínimo.

En general, si empiezas desde una asignación /24, disminuir la /mask en 1 para cada condición (grupo adicional de tipos de instancias, región adicional) es una buena regla general. Por ejemplo, si intentas crear ambos grupos de tipos de instancias en la misma asignación, pasar de /24 a /23 es suficiente.

Después de expandir un rango de IP existente, actualiza el intercambio de tráfico de VPC con el siguiente comando:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID
    
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 no es compatible con Cloud SQL para PostgreSQL. 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.

Marcas

Problema Soluciona problemas
Configura la zona horaria para una sesión, pero vence cuando cierras sesión.

Conéctate a la base de datos y establece la zona horaria de la base de datos con el valor que desees, ya sea por usuario o por base de datos.

En Cloud SQL para PostgreSQL, puedes especificar lo siguiente. Esta configuración permanece después de que se cierra una sesión, lo que imita una configuración de .conf:

ALTER DATABASE dbname SET TIMEZONE TO 'timezone';
ALTER USER username SET TIMEZONE TO 'timezone';

Esta configuración solo se aplica a las conexiones nuevas a la base de datos. Para ver el cambio en la zona horaria, desconéctate de la instancia y vuelve a conectarte a ella.

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
Mensaje de error: permission denied for schema public En las versiones 15 y posteriores de PostgreSQL, si la base de datos de destino se crea a partir de template0, es posible que la importación de datos falle. Para resolver este problema, proporciona privilegios de esquema públicos al usuario cloudsqlsuperuser mediante la ejecución del comando GRANT ALL ON SCHEMA public TO cloudsqlsuperuser de SQL.
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.

Después de importar datos, el tamaño del uso del disco de datos es mucho mayor.

Es posible que haya un uso inesperado del disco después de importar datos. Este uso puede deberse a la recuperación de un momento determinado.

Para resolver esto, después de importar datos, inhabilita la recuperación de un momento determinado si deseas borrar los registros y recuperar el almacenamiento. Ten en cuenta que disminuir el almacenamiento en uso no reduce el tamaño del almacenamiento aprovisionado para la instancia.

Mensaje de error: GRANT stderr: ERROR: must be member of role ROLE_NAME

Este mensaje de error aparece si intentas importar un archivo de volcado de SQL que se sube en Cloud Storage a una base de datos de Cloud SQL y el trabajo de importación se ejecuta durante cuatro días.

ROLE_NAME es un rol de base de datos personalizado definido en la base de datos de PostgreSQL de origen. El usuario cloudsqlsuperuser predeterminado importa el archivo de volcado de SQL. Sin embargo, es posible que este usuario no pertenezca al rol ROLE_NAME.

Para resolver este problema, realiza los siguientes pasos:

  1. Crea el rol ROLE_NAME en la base de datos de destino en la que se importará el archivo de volcado de SQL.
  2. No uses el usuario cloudsqlsuperuser para importar el archivo. En su lugar, en la base de datos de destino, especifica un usuario que sea miembro de el rol ROLE_NAME. Para especificar el usuario, ejecuta el siguiente comando:

    gcloud sql import sql INSTANCE URI [--async]
    [--database=DATABASE, -d DATABASE] [--user=USER] [GCLOUD_WIDE_FLAG …]

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.

Logging

Problema Soluciona problemas
Logging usa mucha memoria y CPU en tu instancia de Cloud SQL. El uso de recursos para el registro debe ajustarse.

La marca log_statement se puede establecer en ninguna y la marca logging_collector se puede desactivar. Si el registro continúa, es posible que haya otras marcas relacionadas con el registro que se pueden ajustar. Puedes editar la instancia para modificar estas marcas.

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.

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
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.

En esta conversación de Stack Exchange, se explica cómo encontrar los objetos que son propiedad del usuario.
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, import 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.
El espacio en el disco aumenta significativamente. Una ranura que no se usa de forma activa para realizar un seguimiento de los datos hace que PostgreSQL se conserve en los segmentos WAL de forma indefinida, lo que hace que el espacio en disco crezca de forma indefinida. Si usas las funciones de replicación y decodificación lógicas en Cloud SQL, las ranuras de replicación se crean y descartan de forma automática. Las ranuras de replicación sin usar se pueden detectar si consultas la vista del sistema pg_replication_slots y filtras en la columna active. Las ranuras sin usar se pueden descartar para quitar los segmentos de WAL mediante el comando pg_drop_replication_slot.
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.
Errores cuando se vuelven a compilar índices en PostgreSQL 9.6 Recibirás un error de PostgreSQL que te informará que debes volver a compilar un índice en particular. Esto se puede hacer solo en la instancia principal. Si creas una instancia de réplica nueva, pronto recibirás el mismo error. Los índices hash no se propagan a las réplicas en las versiones de PostgreSQL inferiores a 10.

Si debes usar índices de hash, actualiza a PostgreSQL 10 o versiones posteriores. De lo contrario, si también quieres usar réplicas, no uses índices de hash en PostgreSQL 9.6.

La consulta en la instancia principal siempre se ejecuta. Después de crear una réplica, se espera que la consulta SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' se ejecute de forma continua en tu instancia principal.
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.

Si la instancia principal y la réplica tienen diferentes tamaños de CPU virtuales, puede haber problemas de rendimiento de las consultas porque el optimizador de consultas tiene en cuenta los tamaños de las CPU virtuales.

Para resolver este problema, realiza los siguientes pasos:

  1. Activa la marca log_duration y establece el parámetro log_statement en ddl. Esto te proporciona las consultas y el tiempo de ejecución en la base de datos. Sin embargo, según tu carga de trabajo, esto podría causar problemas de rendimiento.
  2. En la instancia principal y en la réplica de lectura, ejecuta explain analyze para las consultas.
  3. Compara el plan de consultas y verifica si hay diferencias.

Si se trata de una consulta específica, modifícala. Por ejemplo, puedes cambiar el orden de las uniones para ver si obtienes un mejor rendimiento.