Resolver problemas

Verifique se a sua pergunta ou problema já foi abordado numa das seguintes páginas:

Os tópicos nesta página incluem:

Cópia de segurança e recuperação

Problema Resolução de problemas
Não pode ver o estado da operação atual. A consola Google Cloud apenas comunica o êxito ou a falha quando a operação estiver concluída. Não foi concebido para mostrar avisos ou outras atualizações.

Execute o comando gcloud sql operations list para listar todas as operações da instância do Cloud SQL especificada.

Quer saber quem emitiu uma operação de cópia de segurança a pedido. A interface do utilizador não mostra o utilizador que iniciou uma operação.

Procure nos registos e filtre por texto para encontrar o utilizador. Pode ter de usar registos de auditoria para informações privadas. Os ficheiros de registo relevantes incluem:

  • cloudsql.googleapis.com/postgres.log
  • Se os registos de auditoria do Google Cloud estiverem ativados e tiver as autorizações necessárias para os ver, o cloudaudit.googleapis.com/activity também pode estar disponível.
Depois de eliminar uma instância, não pode fazer uma cópia de segurança da mesma.

Se eliminar uma instância sem fazer uma cópia de segurança final dos dados, não é possível recuperar os dados. No entanto, se restaurar a instância, o Cloud SQL também restaura as cópias de segurança. Para mais informações sobre a recuperação de uma instância eliminada, consulte o artigo Mantenha as cópias de segurança após a eliminação da instância.

Se tiver feito uma operação de exportação, crie uma nova instância e, em seguida, faça uma operação de importação para recriar a base de dados. As exportações são escritas no Cloud Storage e as importações são lidas a partir daí.

Uma cópia de segurança automática está bloqueada há muitas horas e não pode ser cancelada. As cópias de segurança podem demorar muito tempo, consoante o tamanho da base de dados.

Se realmente precisar de cancelar a operação, pode pedir ao apoio ao cliente que force restart a instância.

Uma operação de restauro pode falhar quando um ou mais utilizadores referenciados no ficheiro de captura SQL não existem. Antes de restaurar uma captura de SQL, todos os utilizadores da base de dados que tenham objetos ou aos quais foram concedidas autorizações relativamente a objetos na base de dados capturada têm de existir na base de dados de destino. Caso contrário, a operação de restauro não consegue recriar os objetos com a propriedade ou as autorizações originais.

Crie os utilizadores da base de dados antes de restaurar o despejo SQL.

Quiser aumentar o número de dias durante os quais pode manter as cópias de segurança automáticas de sete para 30 dias ou mais. Pode configurar o número de cópias de segurança automáticas a reter, entre 1 e 365. As cópias de segurança automáticas são reduzidas regularmente com base no valor de retenção configurado. Infelizmente, isto significa que as cópias de segurança atualmente visíveis são as únicas cópias de segurança automáticas a partir das quais pode fazer o restauro.

Para manter as cópias de segurança indefinidamente, pode criar uma cópia de segurança a pedido, uma vez que não são eliminadas da mesma forma que as cópias de segurança automáticas. As cópias de segurança a pedido permanecem indefinidamente. Ou seja, permanecem até serem eliminados ou a instância à qual pertencem ser eliminada. Uma vez que esse tipo de cópia de segurança não é eliminado automaticamente, pode afetar a faturação.

Uma cópia de segurança automática falhou e não recebeu uma notificação por email. Para que o Cloud SQL lhe envie uma notificação sobre o estado da cópia de segurança, configure um alerta baseado em registos.
Uma instância está a falhar repetidamente porque está a alternar entre os estados de falha e restauro da cópia de segurança. As tentativas de ligação e utilização da base de dados após a restauração falham.
  • Pode haver demasiadas ligações abertas. O excesso de ligações pode resultar de erros que ocorrem a meio de uma ligação em que não existem definições autovacuum para limpar ligações inativas.
  • A repetição cíclica pode ocorrer se algum código personalizado estiver a usar uma lógica de repetição que não pare após algumas falhas.
  • Pode haver demasiado tráfego. Use a pool de ligações e outras práticas recomendadas para a conetividade.

Opções que pode testar:

  1. Verifique se a base de dados está configurada para autovacuum.
  2. Verifique se existe alguma lógica de nova tentativa de ligação configurada no código personalizado.
  3. Diminua o tráfego até a base de dados recuperar e, em seguida, aumente-o lentamente.
Verifica que faltam dados quando realiza uma operação de cópia de segurança/restauro. As tabelas foram criadas como não registadas. Por exemplo:

CREATE UNLOGGED TABLE ....

Estas tabelas não estão incluídas num restauro a partir de uma cópia de segurança:

  • O conteúdo das tabelas não registadas não sobrevive à comutação por falha numa instância de HA.
  • As tabelas não registadas não sobrevivem a falhas do postgres.
  • As tabelas não registadas não são replicadas para réplicas de leitura.
  • As tabelas não registadas são apagadas automaticamente durante o restauro da cópia de segurança.

A solução é evitar a utilização de tabelas não registadas se quiser restaurar essas tabelas através de uma cópia de segurança. Se estiver a restaurar a partir de uma base de dados que já tenha tabelas não registadas, pode despejar a base de dados para um ficheiro e recarregar os dados depois de modificar o ficheiro despejado para ALTER TABLE para SET LOGGED nessas tabelas.

Não é possível eliminar uma instância quando opta por fazer uma cópia de segurança final na eliminação da instância. Quando elimina uma instância, tem de confirmar se quer fazer uma cópia de segurança final da instância antes de a eliminar. Se ativou a cópia de segurança final através da definição da instância final-backup, a seleção que fizer quando eliminar a instância tem de corresponder à configuração da instância de cópia de segurança final que definiu quando ativou a cópia de segurança final para a instância. Para mitigar este problema, faça uma das seguintes ações:
  • Defina o valor de cópia de segurança final para corresponder à configuração de cópia de segurança existente da instância.
  • Deixe o campo de cópia de segurança final vazio quando eliminar a instância. Se deixar o campo vazio, o Cloud SQL usa a configuração de cópia de segurança final definida nas definições da instância para fazer uma cópia de segurança final e definir a respetiva retenção.
Para ver a configuração final da instância de cópia de segurança da sua instância, consulte Ver informações da instância.
Não é possível criar uma instância de réplica após criar com êxito uma instância principal com a definição de cópia de segurança final. Se criar uma nova instância com a definição da instância de cópia de segurança final ativada, tem de atualizar a política da organização de cópia de segurança final para aplicar as configurações de cópia de segurança apenas à instância principal. As cópias de segurança finais não são suportadas para instâncias de réplica.
Para mais informações, consulte as políticas de organização do Cloud SQL.

Cancele a importação e a exportação

Problema Resolução de problemas
Mensagem de erro: You can't cancel operation [operation-ID] because this operation isn't in progress.

Está a tentar cancelar uma operação de importação ou exportação que foi concluída, falhou ou foi cancelada. Se a operação estiver em execução, pode cancelá-la.

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

O Cloud SQL não suporta o cancelamento da operação porque tem um tipo de operação diferente de IMPORT ou EXPORT.

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

De momento, o Cloud SQL não pode cancelar a operação de importação ou exportação. Tente novamente dentro de alguns segundos. Se o problema persistir, contacte o Google Cloud apoio técnico.

Clonar

Problema Resolução de problemas
A clonagem falha com o erro constraints/sql.restrictAuthorizedNetworks. A operação de clonagem está bloqueada pela configuração Authorized Networks. Authorized Networks estão configurados para endereços IP públicos na secção Conetividade da consola, e a clonagem não é permitida devido a considerações de segurança. Google Cloud

Remova todas as entradas de Authorized Networks da instância do Cloud SQL, se possível. Caso contrário, crie uma réplica sem entradas Authorized Networks.

Mensagem de erro: 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á a tentar usar a Google Cloud consola para clonar uma instância com um endereço IP privado, mas não especificou o intervalo de IP alocado que quer usar, e a instância de origem não foi criada com o intervalo especificado. Como resultado, a instância clonada é criada num intervalo aleatório.

Use gcloud para clonar a instância e fornecer um valor para o parâmetro
--allocated-ip-range-name. Para mais informações, consulte o artigo Clonar uma instância com um IP privado.

Ligar

Problema Resolução de problemas
Aborted connection. O problema pode ser:
  • Instabilidade de rede.
  • Nenhuma resposta aos comandos TCP keep-alive (o cliente ou o servidor não está a responder, possivelmente sobrecarregado)
  • O tempo de vida da ligação do motor da base de dados foi excedido e o servidor termina a ligação.

As aplicações têm de tolerar falhas de rede e seguir as práticas recomendadas , como a pool de ligações e a repetição. A maioria dos agrupadores de ligações deteta estes erros sempre que possível. Caso contrário, a aplicação tem de tentar novamente ou falhar sem problemas.

Para repetir a ligação, recomendamos os seguintes métodos:

  1. Retirada exponencial. Aumente o intervalo de tempo entre cada nova tentativa de forma exponencial.
  2. Adicione também uma repetição aleatória.

A combinação destes métodos ajuda a reduzir a limitação.

Certificate verify failed.

Os certificados de cliente expiraram ou o caminho para os certificados não está correto.

Regenerar os certificados recriando-os.

FATAL: database 'user' does not exist. gcloud sql connect --user só funciona com o utilizador postgres predefinido.

Ligue-se ao utilizador predefinido e, em seguida, altere os utilizadores.

Quer saber quem está ligado. Inicie sessão na base de dados e execute 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.

O endereço do anfitrião não corresponde ao endereço nos nomes alternativos do certificado do servidor.

Se estiver a usar o Node.js com verify-full ou o respetivo equivalente, use o nome de DNS para o parâmetro servername. Pode encontrar o nome DNS no certificado do servidor através do openssl. Por exemplo, 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'
}

Crie instâncias

Problema Resolução de problemas
Mensagem de erro: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. Não existem mais endereços disponíveis no intervalo de IP atribuído. Podem existir vários cenários possíveis:

  • O tamanho do intervalo de IP atribuído para a ligação de serviço privada é inferior a /24.
  • A dimensão do intervalo de IP atribuído para a ligação de serviço privado é demasiado pequena para o número de instâncias do Cloud SQL.
  • O requisito relativo ao tamanho do intervalo de IPs atribuído é maior se forem criadas instâncias em várias regiões. Veja a dimensão do intervalo atribuído

Para resolver este problema, pode expandir o intervalo de IPs atribuído existente ou atribuir um intervalo de IPs adicional à ligação de serviço privado. Para mais informações, consulte o artigo Atribua um intervalo de endereços IP.

Se usou a flag --allocated-ip-range-name ao criar a instância do Cloud SQL, só pode expandir o intervalo de IP especificado.

Se estiver a atribuir um novo intervalo, certifique-se de que a atribuição não se sobrepõe a nenhuma atribuição existente.

Depois de criar um novo intervalo de IPs, atualize o peering de VPC com o seguinte 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
    

Se estiver a expandir uma atribuição existente, tenha cuidado para aumentar apenas o intervalo de atribuição e não o diminuir. Por exemplo, se a atribuição original for 10.0.10.0/24, faça a nova atribuição, pelo menos, em 10.0.10.0/23.

Em geral, se começar com uma atribuição /24, diminuir a máscara em 1 para cada condição (grupo de tipos de instâncias adicional, região adicional) é uma boa regra geral. Por exemplo, se tentar criar grupos de tipos de instâncias em simultâneo na mesma atribuição, passar de /24 para /23 é suficiente.

Depois de expandir um intervalo de IP existente, atualize a interligação de VPC com o seguinte comando:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID
    
Mensagem de erro: Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID]. Tente criar novamente a instância do Cloud SQL.
Mensagem de erro: HTTPError 400: Invalid request: Incorrect Service Networking config for instance: PROJECT_ID:INSTANCE_NAME:SERVICE_NETWORKING_NOT_ENABLED.

Ative a API Service Networking através do seguinte comando e tente criar novamente a instância do Cloud SQL.

gcloud services enable servicenetworking.googleapis.com \
--project=PROJECT_ID
    
Mensagem de erro: Failed to create subnetwork. Required 'compute.projects.get' permission for PROJECT_ID. Quando cria uma instância com um endereço IP privado, é criada uma conta de serviço no momento através da API Service Networking. Se ativou recentemente a API Service Networking, a conta de serviço pode não ser criada e a criação da instância falha. Neste caso, tem de aguardar que a conta de serviço seja propagada por todo o sistema ou adicioná-la manualmente com as autorizações necessárias.
Mensagem de erro: More than 3 subject alternative names are not allowed. Está a tentar usar um SAN personalizado para adicionar mais de três nomes DNS ao certificado do servidor de uma instância do Cloud SQL. Não pode adicionar mais de três nomes de DNS à instância.
Mensagem de erro: Subject alternative names %s is too long. The maximum length is 253 characters. Certifique-se de que os nomes DNS que quer adicionar ao certificado do servidor de uma instância do Cloud SQL não têm mais de 253 carateres.
Mensagem de erro: Subject alternative name %s is invalid.

Verifique se os nomes DNS que quer adicionar ao certificado do servidor de uma instância do Cloud SQL cumprem os seguintes critérios:

  • Não têm carateres universais.
  • Não têm pontos finais.
  • Cumprem as especificações da RFC 1034.

Exportar

Problema Resolução de problemas
HTTP Error 409: Operation failed because another operation was already in progress. Já existe uma operação pendente para a sua instância. Só é permitida uma operação de cada vez. Experimente fazer o pedido depois de a operação atual estar concluída.
HTTP Error 403: The service account does not have the required permissions for the bucket. Certifique-se de que o contentor existe e que a conta de serviço da instância do Cloud SQL (que está a fazer a exportação) tem a função Storage Object Creator (roles/storage.objectCreator) para permitir a exportação para o contentor. Consulte as funções de IAM para o Cloud Storage.
A exportação de CSV funcionou, mas a exportação de SQL falhou. Os formatos CSV e SQL são exportados de forma diferente. O formato SQL exporta toda a base de dados e, provavelmente, demora mais tempo a ser concluído. O formato CSV permite-lhe definir que elementos da base de dados incluir na exportação.

Use exportações de CSV para exportar apenas o que precisa.

A exportação está a demorar demasiado tempo. O Cloud SQL não suporta operações síncronas simultâneas.

Use a transferência de exportação. A um nível elevado, na descarga de exportação, em vez de emitir uma exportação na instância de origem, o Cloud SQL inicia uma instância de descarga para realizar a exportação. A transferência da exportação tem várias vantagens, incluindo um aumento do desempenho na instância de origem e o desbloqueio de operações administrativas enquanto a exportação está em execução. Com a transferência da exportação, a latência total pode aumentar pela quantidade de tempo que demora a apresentar a instância de transferência. Geralmente, para exportações de tamanho razoável, a latência não é significativa. No entanto, se a exportação for suficientemente pequena, pode notar o aumento na latência.

Erro ao criar extensão. O ficheiro de despejo contém referências a extensões não suportadas.

Edite o ficheiro de despejo para remover as referências.

Erro ao usar pg_dumpall. A utilização do utilitário pg_dumpall com a flag --global requer a função de superutilizador, mas esta função não é suportada no Cloud SQL para PostgreSQL. Para evitar que ocorram erros ao realizar operações de exportação que incluam nomes de utilizadores, use também a flag --no-role-passwords.
A operação de exportação excede o limite de tempo antes de exportar qualquer conteúdo e é apresentada a mensagem de erro Could not receive data from client: Connection reset by peer. Se o Cloud Storage não receber dados num determinado período, normalmente cerca de sete minutos, a ligação é reposta. É possível que a consulta de exportação inicial esteja a demorar demasiado tempo a ser executada.

Faça uma exportação manual através da ferramenta pg_dump.

Quer que as exportações sejam automáticas. O Cloud SQL não oferece uma forma de automatizar as exportações.

Pode criar o seu próprio sistema de exportação automatizado usando produtos como o Cloud Scheduler, o Pub/Sub e as funções do Cloud Run, semelhantes a este artigo sobre a automatização de cópias de segurança. Google Cloud

Bandeiras

Problema Resolução de problemas
Define o fuso horário de uma sessão, mas este expira quando termina sessão.

Faça a ligação à base de dados e defina o fuso horário da base de dados como o pretendido, por utilizador ou por base de dados.

No Cloud SQL para PostgreSQL, pode especificar o seguinte. Estas definições permanecem após o fecho de uma sessão, simulando uma configuração de .conf:

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

Estas definições aplicam-se apenas a novas ligações à base de dados. Para ver a alteração ao fuso horário, desassocie-se da instância e, em seguida, volte a associar-se à mesma.

Alta disponibilidade

Problema Resolução de problemas
Não consegue encontrar as métricas para uma comutação por falha manual. Apenas as comutações por falha automáticas são incluídas nas métricas.
Os recursos da instância do Cloud SQL (CPU e RAM) estão perto de 100% de utilização, o que faz com que a instância de alta disponibilidade fique inativa. O tamanho da máquina da instância é demasiado pequeno para a carga.

Edite a instância para atualizar para um tamanho de máquina maior e ter mais CPUs e memória.

Importar

Problema Resolução de problemas
Mensagem de erro: permission denied for schema public Para as versões 15 e posteriores do PostgreSQL, se a base de dados de destino for criada a partir do template0, a importação de dados pode falhar. Para resolver este problema, conceda privilégios de esquema público ao utilizador cloudsqlsuperuser executando o comando SQL GRANT ALL ON SCHEMA public TO cloudsqlsuperuser.
HTTP Error 409: Operation failed because another operation was already in progress. Já existe uma operação pendente para a sua instância. Só é permitida uma operação de cada vez. Experimente fazer o pedido depois de a operação atual estar concluída.
A operação de importação está a demorar demasiado tempo. Demasiadas associações ativas podem interferir com as operações de importação.

Feche operações não usadas. Verifique a utilização de memória e CPU da sua instância do Cloud SQL para se certificar de que existem muitos recursos disponíveis. A melhor forma de garantir o máximo de recursos para a importação é reiniciar a instância antes de começar a operação.

Um reinício:

  • Fecha todas as ligações.
  • Termina todas as tarefas que possam estar a consumir recursos.
Uma operação de importação pode falhar quando um ou mais utilizadores referenciados no ficheiro de captura não existem. Antes de importar um ficheiro de captura, todos os utilizadores de bases de dados que tenham objetos, ou aos quais foram concedidas autorizações relativamente a objetos na base de dados capturada, têm de existir na base de dados de destino. Caso contrário, a operação de importação não consegue recriar os objetos com a propriedade ou as autorizações originais.

Crie os utilizadores da base de dados antes da importação.

Após a importação de dados, o tamanho da utilização do disco de dados é muito superior.

Pode haver uma utilização inesperada do disco após a importação de dados. Esta utilização pode dever-se à utilização da recuperação num determinado momento.

Para resolver este problema, depois de importar dados, desative a recuperação num determinado momento se quiser eliminar registos e recuperar armazenamento. Tenha em atenção que a diminuição do armazenamento usado não reduz o tamanho do armazenamento aprovisionado para a instância.

Mensagem de erro: GRANT stderr: ERROR: must be member of role ROLE_NAME

Esta mensagem de erro é apresentada se tentar importar um ficheiro de despejo SQL carregado no Cloud Storage para uma base de dados do Cloud SQL e a tarefa de importação tiver sido executada durante cerca de quatro dias.

ROLE_NAME é uma função de base de dados personalizada definida na base de dados PostgreSQL de origem. O utilizador cloudsqlsuperuser predefinido importa o ficheiro de despejo SQL. No entanto, este utilizador pode não pertencer à função ROLE_NAME.

Para resolver este problema, conclua os seguintes passos:

  1. Crie a função ROLE_NAME na base de dados de destino onde está a importar o ficheiro de captura SQL.
  2. Não use o utilizador cloudsqlsuperuser para importar o ficheiro. Em alternativa, na base de dados de destino, especifique um utilizador que seja membro da função ROLE_NAME. Para especificar o utilizador, execute o seguinte comando:

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

Integre com o Vertex AI

Problema Resolução de problemas
Mensagem de erro: Google ML integration API is supported only on Postgres version 12 or above. Para ativar a integração do Vertex AI no Cloud SQL, tem de ter uma base de dados do Cloud SQL para PostgreSQL, versão 12 ou posterior. Para atualizar a base de dados para esta versão, consulte o artigo Atualize a versão principal da base de dados no local.
Mensagem de erro: Google ML Integration API is not supported on shared core instance. Please upsize your machine type. Se selecionou um núcleo partilhado para o tipo de máquina da sua instância, não pode ativar a integração do Vertex AI no Cloud SQL. Atualize o tipo de máquina para núcleo dedicado. Para mais informações, consulte o artigo Tipo de máquina.
Mensagem de erro: 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 ativar a integração do Vertex AI no Cloud SQL, a versão de manutenção da sua instância tem de ser R20240130 ou posterior. Para atualizar a sua instância para esta versão, consulte o artigo Manutenção self-service.
Mensagem de erro: Cannot invoke ml_predict_row if 'cloudsql.enable_google_ml_integration' is off. O cloudsql.enable_google_ml_integration indicador da base de dados está desativado. O Cloud SQL não pode ser integrado com o Vertex AI.

Para ativar esta flag, use o comando gcloud sql instances patch:

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

Substitua INSTANCE_NAME pelo nome da instância principal do Cloud SQL.
Mensagem de erro: Failed to connect to remote host: Connection refused. A integração entre o Cloud SQL e o Vertex AI não está ativada. Para ativar esta integração, use o comando gcloud sql instances patch:

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


Substitua INSTANCE_NAME pelo nome da instância principal do Cloud SQL.
Mensagem de erro: 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. A API Vertex AI não está ativada. Para mais informações sobre como ativar esta API, consulte o artigo Ative a integração da base de dados com o Vertex AI.
Mensagem de erro: Permission 'aiplatform.endpoints.predict' denied on resource. As autorizações da Vertex AI não são adicionadas à conta de serviço do Cloud SQL para o projeto onde a instância do Cloud SQL está localizada. Para mais informações sobre como adicionar estas autorizações à conta de serviço, consulte o artigo Ative a integração da base de dados com o Vertex AI.
Mensagem de erro: Publisher Model `projects/PROJECT_ID/locations/REGION_NAME/publishers/google/models/MODEL_NAME` not found. O modelo de aprendizagem automática ou o GML não existe no Vertex AI.
Mensagem de erro: Resource exhausted: grpc: received message larger than max. O tamanho do pedido que o Cloud SQL transmite à Vertex AI excede o limite de gRPC de 4 MB por pedido.
Mensagem de erro: 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. O Cloud SQL tenta enviar um pedido para o Vertex AI. No entanto, a instância está numa região, mas o ponto final da Vertex AI está numa região diferente. Para resolver este problema, a instância e o ponto final têm de estar na mesma região.
Mensagem de erro: The Vertex AI endpoint isn't formatted properly. O ponto final da Vertex AI não está formatado corretamente. Para mais informações, consulte o artigo Use pontos finais privados para a previsão online.
Mensagem de erro: Quota exceeded for aiplatform.googleapis.com/online_prediction_requests_per_base_model with base model: textembedding-gecko. O número de pedidos que o Cloud SQL transmite ao Vertex AI excede o limite de 1500 pedidos por minuto por região por modelo por projeto.

Registo

Problema Resolução de problemas
O registo usa muita CPU e memória na sua instância do Cloud SQL. O registo tem de ser ajustado.

A flag log_statement pode ser definida como nenhuma e a flag logging_collector pode ser definida como desativada. Se o registo continuar a ocorrer, podem existir outras flags relacionadas com o registo que podem ser ajustadas. Pode editar a instância para modificar estas flags.

Não foram encontrados registos de auditoria. Os registos de acesso a dados só são escritos se a operação for uma chamada de API autenticada orientada pelo utilizador que cria, modifica ou lê dados criados pelo utilizador, ou se a operação aceder a ficheiros de configuração ou metadados de recursos.
As informações das operações não são encontradas nos registos. Quiser encontrar mais informações sobre uma operação.

Por exemplo, um utilizador foi eliminado, mas não consegue saber quem o fez. Os registos mostram que a operação foi iniciada, mas não fornecem mais informações. Tem de ativar o registo de auditoria para que informações de identificação pessoal (PII) detalhadas e pessoais como estas sejam registadas.

Os ficheiros de registo são difíceis de ler. Prefere ver os registos como JSON ou texto.Pode usar o comando gcloud logging read juntamente com os comandos de pós-processamento do Linux para transferir os registos.

Para transferir os registos como JSON:

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 transferir os registos como TEXTO:

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
   
Não são encontrados registos de consultas nos registos do PostgreSQL. Tem de ativar as flags pgaudit.
  1. A partir de um terminal, associe à sua base de dados:
    gcloud sql connect INSTANCE_NAME
          
  2. Execute este comando para criar a extensão:
    CREATE EXTENSION pgaudit;
          
  3. Saia da base de dados e, a partir de um terminal, execute o seguinte comando:
    gcloud sql instances patch INSTANCE_NAME \
    --database-flags=cloudsql.enable_pgaudit=on,pgaudit.log=all
         

Faça a gestão de instâncias

Problema Resolução de problemas
Quer saber que consultas estão a ser executadas agora. Associe à base de dados e execute a seguinte 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;

Quer saber que unidades estão a ser usadas para um campo específico. Associe à base de dados e execute a seguinte consulta (usando o seu próprio FIELD_NAME):

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

Quer encontrar o valor atual de uma definição da base de dados. Associe à base de dados e execute a seguinte consulta (usando o seu próprio SETTING_NAME):

SHOW SETTING_NAME;

Execute SHOW ALL; para ver todas as definições.

Quer parar um processo em segundo plano bloqueado. O utilizador tem de ter a função pg_signal_backend.

Execute os seguintes comandos:

  1.       GRANT pg_signal_backend TO USERNAME;
          
  2. Encontre o ID do processo bloqueado ou parado:
          SELECT pid, usename, state, query FROM pg_stat_activity;
          
  3. Pare um processo em execução ou inativo com estes 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';
          
          
A instância está a aproximar-se do consumo de 100% dos IDs das transações. A sua monitorização interna avisa que a instância está a aproximar-se do consumo de 100% dos IDs das transações. Quer evitar a repetição de transações, o que pode bloquear as escritas.

A tarefa autovacuum pode estar bloqueada ou pode não estar a recuperar os IDs de transações com rapidez suficiente para acompanhar a carga de trabalho.

Para evitar interrupções devido a um problema de repetição de transações, pode rever estas sugestões de autosserviço para lidar com a repetição de TXID.

Para obter aconselhamento geral sobre a otimização, consulte o artigo Otimizar, monitorizar e resolver problemas de operações de vácuo no PostgreSQL.

O armazenamento temporário aumentou o armazenamento automático. O armazenamento automático está ativado.

O reinício elimina os ficheiros temporários, mas não reduz o armazenamento. Apenas o apoio ao cliente pode repor o tamanho da instância.

Os dados estão a ser eliminados automaticamente. É muito provável que um script esteja a ser executado em algum lugar no seu ambiente.

Procure nos registos a hora da eliminação e verifique se existe um script malicioso em execução a partir de um painel de controlo ou de outro processo automatizado.

Não é possível eliminar a instância. Pode ver a mensagem de erro ERROR: (gcloud.sql.instances.delete) HTTP Error 409: The instance or operation is not in an appropriate state to handle the request ou a instância pode ter o estado de flag INSTANCE_RISKY_FLAG_CONFIG.

Algumas explicações possíveis incluem:

  • Está em curso outra operação. As operações do Cloud SQL não são executadas em simultâneo. Aguarde pela conclusão da outra operação.
  • O aviso INSTANCE_RISKY_FLAG_CONFIG é acionado sempre que estiver a ser usada, pelo menos, uma flag beta. Remova as definições de sinalização de risco e reinicie a instância
A instância está bloqueada devido ao grande tamanho dos dados temporários. O sistema pode criar muitas tabelas temporárias em simultâneo, consoante as consultas e o carregamento.

Infelizmente, não pode reduzir o tamanho do ficheiro ibtmp1 por nenhum método, exceto reiniciando o serviço.

Uma opção de mitigação é criar a tabela temporária com ROW_FORMAT=COMPRESSED, para que seja armazenada em espaços de tabelas de ficheiros por tabela no diretório de ficheiros temporários. No entanto, a desvantagem são os custos de desempenho associados à criação e remoção de um tablespace de ficheiro por tabela para cada tabela temporária.

Erro fatal durante a atualização. Os registos podem revelar mais informações, mas, em qualquer caso, pode ser necessário o apoio ao cliente para forçar a recriação da instância.
A instância está bloqueada no reinício após ficar sem espaço em disco. A capacidade de aumento automático do armazenamento não está ativada.

Se a sua instância ficar sem armazenamento e a capacidade de aumento automático do armazenamento não estiver ativada, a instância fica offline. Para evitar este problema, pode editar a instância para ativar o aumento automático do armazenamento.

A sua instância principal no local está bloqueada. Google Cloud não pode ajudar com instâncias que não estejam no Cloud SQL.
Encerramento lento no reinício. Quando uma instância é encerrada, todas as ligações pendentes que não terminarem no prazo de 60 segundos tornam o encerramento incorreto.

Ao ter ligações com uma duração inferior a 60 segundos, é possível evitar a maioria dos encerramentos não limpos, incluindo ligações a partir da linha de comandos da base de dados. Se mantiver estas ligações abertas durante horas ou dias, os encerramentos podem não ser limpos.

Não é possível eliminar um utilizador. O utilizador tem provavelmente objetos na base de dados que dependem do mesmo. Tem de largar esses objetos ou reatribuí-los a outro utilizador.

Descubra que objetos dependem do utilizador e, em seguida, elimine ou reatribua esses objetos a outro utilizador.

Esta discussão no Stack Exchange explica como encontrar os objetos pertencentes ao utilizador.
Consultas específicas estão a ser executadas lentamente. As consultas podem ser lentas por vários motivos, principalmente devido a aspetos específicos da base de dados. Um dos motivos que pode envolver o Cloud SQL é a latência da rede, quando o recurso de origem (gravador ou leitor) e o recurso de destino (Cloud SQL) estão em regiões diferentes.

Consulte, em particular, as dicas de desempenho geral.

Para inserções, atualizações ou eliminações lentas na base de dados, considere as seguintes ações:

  • Verifique as localizações do escritor e da base de dados. O envio de dados a uma longa distância introduz latência.
  • Verifique a localização do leitor e da base de dados. A latência afeta o desempenho de leitura ainda mais do que o desempenho de escrita

Para reduzir a latência, recomendamos que localize os recursos de origem e de destino na mesma região.

É indicado que a memória está esgotada, mas os gráficos de monitorização não o mostram. Uma instância pode falhar e comunicar Out of memory, mas a consola ou os gráficos do Cloud Monitoring parecem mostrar que ainda existe memória disponível. Google Cloud

Existem outros fatores, além da sua carga de trabalho, que podem afetar a utilização de memória, como o número de ligações ativas e os processos internos gerais. Estas nem sempre se refletem nos gráficos de monitorização.

Certifique-se de que a instância tem sobrecarga suficiente para ter em conta a sua carga de trabalho, além de alguma sobrecarga adicional.

Recuperar uma instância eliminada. Todos os dados numa instância, incluindo as cópias de segurança, são perdidos permanentemente quando essa instância é eliminada.

Para preservar os seus dados, exporte-os para o Cloud Storage antes de eliminar uma instância.

A função de administrador do Cloud SQL inclui a autorização para eliminar a instância. Para evitar a eliminação acidental, conceda esta função apenas quando necessário.

Quer mudar o nome de uma instância do Cloud SQL existente. A mudança do nome de uma instância existente não é suportada.

Existem outras formas de atingir o objetivo criando uma nova instância.

  • Pode clonar a instância que quer mudar o nome e definir um novo nome para a instância clonada. Isto permite-lhe criar a nova instância sem ter de importar dados manualmente. Tal como quando cria uma nova instância, a instância clonada tem um novo endereço IP.
  • Pode exportar dados da sua instância para um contentor do Cloud Storage, criar uma nova instância com o novo nome pretendido e, em seguida, importar os dados para a nova instância.

Em ambos os casos, pode eliminar a instância antiga após a conclusão da operação. Recomendamos que opte pela clonagem, uma vez que não tem impacto no desempenho e não requer que refaça as definições de configuração da instância, como flags, tipo de máquina, tamanho do armazenamento e memória.

Erro ao eliminar uma instância. Se a proteção contra eliminação estiver ativada para uma instância, confirme os seus planos para eliminar a instância. Em seguida, desative a proteção contra eliminação antes de eliminar a instância.

Private Service Connect

Problema Resolução de problemas
A associação do serviço da instância não aceita o ponto final do Private Service Connect.
  1. Verifique o estado do ponto final.

    gcloud

    Para verificar o estado, use o comando
    gcloud compute forwarding-rules describe.

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

    Faça as seguintes substituições:

    • ENDPOINT_NAME: o nome do ponto final
    • PROJECT_ID: o ID ou o número do projeto do projeto Google Cloud que contém o ponto final
    • REGION_NAME: o nome da região do ponto final

    REST

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • PROJECT_ID: o ID ou o número do projeto do projeto Google Cloud que contém o ponto final do Private Service Connect
    • REGION_NAME: o nome da região
    • ENDPOINT_NAME: o nome do ponto final

    Método HTTP e URL:

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

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "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. Verifique se o estado do ponto final é ACCEPTED. Se o estado for PENDING, a instância não está a permitir o projeto Google Cloud que contém o ponto final. Certifique-se de que o projeto de rede no qual o ponto final é criado é permitido. Para mais informações, consulte o artigo Edite uma instância com o Private Service Connect ativado.
ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: The resource 'projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME' was not found Esta mensagem de erro pode ocorrer quando reserva um endereço IP interno estático para o ponto final do Private Service Connect. Certifique-se de que a sub-rede especificada existe no projeto especificado pelo URI. Se quiser criar um ponto final num projeto de serviço, mas usar uma sub-rede de uma rede de VPC partilhada, tem de especificar a sub-rede pelo respetivo URI e usar o ID do projeto do projeto anfitrião no URI. Para mais informações, consulte o artigo Crie o ponto final manualmente.
ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: - The resource 'projects/PROJECT_ID/global/networks/NETWORK_NAME' was not found Esta mensagem de erro pode ocorrer quando cria um ponto final do Private Service Connect manualmente. Certifique-se de que a rede especificada existe no projeto especificado pelo URI. Se quiser criar um ponto final num projeto de serviço, mas usar uma rede de VPC partilhada, tem de especificar a rede pelo respetivo URI e usar o ID do projeto do projeto anfitrião no URI. Para mais informações, consulte o artigo Crie o ponto final manualmente.
Invalid consumer network status for PSC auto connection.

A rede de consumo não está configurada corretamente ou não está configurada de todo e, por isso, não está disponível nenhum ponto final para estabelecer ligação. Para se ligar ao ponto final, tem de verificar o estado do ponto final e corrigir o erro antes de tentar estabelecer ligação novamente.
Para verificar o estado de um ponto final, consulte Obtenha o ponto final. O estado do ponto final pode ser um dos seguintes:

  • CONNECTION_POLICY_MISSING: não existe uma política de ligação de serviço correspondente na rede do consumidor. As políticas de ligação de serviços são configuradas por rede e por região. Para reconfigurar a rede, consulte o artigo Atualize uma política de ligação de serviço.
  • CONSUMER_INSTANCE_PROJECT_NOT_ALLOWLISTED: existe uma política de ligação de serviço correspondente, mas a instância de serviço não está configurada para permitir a ligação a esta instância. Para reconfigurar a política de ligação de serviços, consulte o artigo Atualize uma política de ligação de serviços.
  • POLICY_LIMIT_REACHED: a política de ligação de serviço atingiu o respetivo limite de pontos finais. Para resolver o problema, tem de aumentar o limite de pontos finais atualizando a política de ligação ao serviço.

No permission to create a service connection policy.

Não tem as autorizações necessárias para criar uma política de ligação de serviço. Para criar uma política de ligação de serviço, precisa da função Compute Network Admin IAM. Para mais informações, consulte o artigo Funções e autorizações.

A associação da rede não consegue aceitar ligações da interface do Private Service Connect quando usa a conetividade de saída do Private Service Connect.

Se a sua rede externa não conseguir aceitar ligações da interface do Private Service Connect, as políticas de ligação na associação da rede podem não estar configuradas corretamente.

Os anexos de rede têm de ser configurados para aceitar todas as ligações automaticamente ou configurados manualmente com uma lista de ligações aceites. Para mais informações, consulte as políticas de ligação.

Use o seguinte comando para validar as associações aceites no anexo de rede:

      gcloud compute network-attachments describe default
      --region=REGION_ID
Se a interface do Private Service Connect não estiver na lista aceite, atualize a associação da rede. Para mais informações, consulte o artigo Faça a gestão dos anexos de rede.

Replicação

Problema Resolução de problemas
A réplica de leitura não começou a ser replicada na criação. Provavelmente, existe um erro mais específico nos ficheiros de registo. Inspeccione os registos nos Registos na nuvem para encontrar o erro real.
Não é possível criar uma réplica de leitura: erro invalidFlagValue. Uma das flags no pedido é inválida. Pode ser uma flag que forneceu explicitamente ou uma que foi definida para um valor predefinido.

Primeiro, verifique se o valor da flag max_connections é superior ou igual ao valor no registo principal.

Se a flag max_connections estiver definida corretamente, inspecione os registos no Cloud Logging para encontrar o erro real.

Não é possível criar uma réplica de leitura: erro desconhecido. Provavelmente, existe um erro mais específico nos ficheiros de registo. Inspeccione os registos nos Registos na nuvem para encontrar o erro real.

Se o erro for: set Service Networking service account as servicenetworking.serviceAgent role on consumer project, desative e reative o Service Networking API. Esta ação cria a conta de serviço necessária para continuar com o processo.

O disco está cheio. O tamanho do disco da instância principal pode ficar cheio durante a criação da réplica. Edite a instância principal para a atualizar para um tamanho de disco maior.
O espaço em disco aumenta significativamente. Um espaço que não é usado ativamente para acompanhar dados faz com que o PostgreSQL mantenha os segmentos WAL indefinidamente, o que faz com que o espaço em disco aumente indefinidamente. Se usar as funcionalidades de replicação e descodificação lógica no Cloud SQL, os slots de replicação são criados e eliminados automaticamente. Pode detetar as ranhuras de replicação não usadas consultando a vista do sistema pg_replication_slots e filtrando pela coluna active. Pode eliminar as posições não usadas para remover segmentos WAL através do comando pg_drop_replication_slot.
A instância da réplica está a usar demasiada memória. A réplica usa memória temporária para colocar em cache operações de leitura pedidas com frequência, o que pode fazer com que use mais memória do que a instância principal.

Reinicie a instância da réplica para recuperar o espaço de memória temporário.

A replicação foi interrompida. O limite máximo de armazenamento foi atingido e o aumento automático do armazenamento não está ativado.

Edite a instância para ativar a autorização automatic storage increase.

O atraso de replicação é consistentemente elevado. A carga de escrita é demasiado elevada para a réplica processar. O atraso de replicação ocorre quando o segmento SQL numa réplica não consegue acompanhar o segmento de E/S. Alguns tipos de consultas ou cargas de trabalho podem causar um atraso de replicação elevado temporário ou permanente para um determinado esquema. Algumas das causas típicas do atraso na replicação são:
  • Consultas lentas na réplica. Encontre-os e corrija-os.
  • Todas as tabelas têm de ter uma chave exclusiva/principal. Cada atualização numa tabela sem uma chave única/primária provoca análises completas da tabela na réplica.
  • As consultas como DELETE ... WHERE field < 50000000 causam um atraso na replicação com a replicação baseada em linhas, uma vez que um grande número de atualizações é acumulado na réplica.

Algumas soluções possíveis incluem:

  • Edite a instância para aumentar o tamanho da réplica.
  • Reduza a carga na base de dados.
  • Envie tráfego de leitura para a réplica de leitura.
  • Indexe as tabelas.
  • Identifique e corrija consultas de escrita lentas.
  • Recrie a réplica.
Erros ao recriar índices no PostgreSQL 9.6. Recebe um erro do PostgreSQL a informar que tem de reconstruir um índice específico. Esta ação só pode ser realizada na instância principal. Se criar uma nova instância de réplica, recebe novamente o mesmo erro em breve. Os índices de hash não são propagados para réplicas em versões do PostgreSQL inferiores a 10.

Se tiver de usar índices de hash, atualize para o PostgreSQL 10 ou superior. Caso contrário, se também quiser usar réplicas, não use índices de hash no PostgreSQL 9.6.

A consulta na instância principal está sempre em execução. Depois de criar uma réplica, espera-se que a consulta SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' seja executada continuamente na sua instância principal.
A criação de réplicas falha devido ao limite de tempo. As transações não comprometidas de longa duração na instância principal podem fazer com que a criação de réplicas de leitura falhe.

Recrie a réplica depois de parar todas as consultas em execução.

Se a instância principal e a réplica tiverem tamanhos de vCPU diferentes, podem ocorrer problemas de desempenho das consultas, uma vez que o otimizador de consultas tem em conta os tamanhos de vCPU.

Para resolver este problema, conclua os seguintes passos:

  1. Ative o sinalizador log_duration e defina o parâmetro log_statement como ddl. Isto fornece-lhe as consultas e o tempo de execução na base de dados. No entanto, dependendo da sua carga de trabalho, isto pode causar problemas de desempenho.
  2. Na instância principal e na réplica de leitura, execute explain analyze para as consultas.
  3. Compare o plano de consulta e verifique se existem diferenças.

Se for uma consulta específica, modifique-a. Por exemplo, pode alterar a ordem das associações para ver se obtém um melhor desempenho.