Como criar instâncias

Nesta página, você verá como criar um Cloud SQL para uma instância do PostgreSQL.

Para saber mais sobre todas as configurações de instância, veja o artigo Configurações de instância.

Durante a criação da instância, um único banco de dados é adicionado a ela. É possível adicionar mais bancos de dados ao criar ou importar mais opções.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  4. Instale e inicialize o SDK do Cloud..
  5. Verifique se você tem os papéis Administrador do Cloud SQL e Leitor do Compute na sua conta de usuário.

    Acessar a página IAM

    Saiba mais sobre papéis e permissões

Como criar uma instância do PostgreSQL

Para criar uma instância do PostgreSQL:

Console

  1. Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Clique em Criar instância.
  3. Selecione PostgreSQL e clique em Próxima.
  4. Insira um nome.

    Não inclua informações confidenciais ou de identificação pessoal no nome da sua instância. Ele é visível externamente.

    Não é necessário incluir o ID do projeto no nome da instância. Isso é feito automaticamente quando necessário, como nos arquivos de registros.

  5. Digite a senha do usuário postgres.
  6. Selecione a versão do banco de dados da instância: PostgreSQL 13 (padrão), PostgreSQL 12, PostgreSQL 11, PostgreSQL 10 ou PostgreSQL 9.6.

    A versão do banco de dados não pode ser editada depois que a instância é criada.

  7. Em Escolher disponibilidade por zona e região, selecione a região e a zona para a instância.

    Coloque a instância na mesma região que os recursos que a acessam. A região selecionada não poderá ser modificada no futuro. Na maioria dos casos, não é necessário especificar uma zona.

    Se você estiver configurando a instância para alta disponibilidade, selecione as zonas primária e secundária.

    As condições a seguir se aplicam quando a zona secundária é usada durante a criação da instância:

    • A zona padrão é Any para a zona principal e Any (different from primary) para a zona secundária.
    • Se as zonas primária e secundária forem especificadas, elas precisarão ser zonas diferentes.
  8. Em Personalizar a instância, atualize as configurações da instância. Comece clicando em MOSTRAR OPÇÕES DE CONFIGURAÇÃO para exibir os grupos de configurações. Em seguida, expanda os grupos cujas configurações você quer revisar e personalizar. Um resumo de todas as opções selecionadas é mostrado à direita.

    A tabela a seguir é uma referência rápida às configurações da instância. Para mais detalhes sobre cada configuração, consulte a página configurações da instância.

    Configuração Observações
    Tipo de máquina
    Tipo de máquinaSelecione entre núcleo compartilhado, leve, Padrão (mais comum) ou Alta memória.
    Personalizado Selecione este botão para criar uma instância com uma configuração flexível. Quando você seleciona essa opção, precisa selecionar o número de núcleos e a quantidade de memória para a instância. Saiba mais.
    Conectividade
    Núcleos Número de vCPUs da instância. Saiba mais.
    Memória A quantidade de memória da instância, em GB. Saiba mais.
    Armazenamento
    Tipo de armazenamento Determina se a instância usa armazenamento SSD ou HDD. Saiba mais.
    Capacidade de armazenamento A quantidade de armazenamento provisionada para a instância. Saiba mais.
    Ativar aumento automático de armazenamento Determina se o Cloud SQL fornece automaticamente mais armazenamento para sua instância quando há pouco espaço livre. Saiba mais.
    Criptografia
    Criptografia gerenciada pelo GoogleA opção padrão.
    Chave de criptografia gerenciada pelo cliente (CMEK, na sigla em inglês)Selecione para usar sua chave com o Google Cloud Key Management Service. Saiba mais.
    Conexões
    IP particular Adiciona um endereço IP privado à instância. Para ativar a conexão com a instância, é necessário ter configurações extras. Saiba mais.
    IP público Adiciona um endereço IP público à instância. Em seguida, é possível adicionar redes autorizadas para se conectar à instância. Saiba mais.
    Redes autorizadasAdicione o nome da nova rede e o endereço dela. Saiba mais.
    Backups
    Backups automáticos A janela de tempo que você quer que os backups comecem. Saiba mais.
    Escolha onde quer armazenar os backupsSelecione "Multirregional" para a maioria dos casos de uso. Se você precisar armazenar backups em uma região específica, por exemplo, se houver razões regulatórias, selecione a região e selecione sua região no menu suspenso "Local".
    Escolher quantos backups automatizados armazenarO número de backups automáticos que você quer manter (de 1 a 365 dias). Saiba mais.
    Ativar recuperação pontual Ativa a recuperação pontual e a geração de registros em tempo de gravação. Saiba mais.
    Escolha quantos dias de registros serão retidos Configure a retenção de registros em tempo de gravação de 1 a 7 dias. A configuração padrão é de sete dias. Saiba mais.
    Manutenção
    Janela preferida Determina uma janela de uma hora em que o Cloud SQL pode executar a manutenção disruptiva na instância. Se você não definir a janela, uma manutenção disruptiva poderá ser feita a qualquer momento. Saiba mais.
    Ordem de atualizações Horário de sua preferência para as atualizações de instâncias, em relação a outras instâncias no mesmo projeto. Saiba mais.
    Sinalizações
    ADICIONAR SINALIZAÇÃO Você pode usar sinalizações do banco de dados para controlar configurações e na instância. Saiba mais.
    Marcadores
    ADICIONAR MARCADORAdicione uma chave e um valor para cada rótulo adicionado. Use marcadores para ajudar a organizar as instâncias.
  9. Clique em Criar.

gcloud

Para ver informações sobre como instalar e dar os primeiros passos com a ferramenta de linha de comando gcloud, consulte Como instalar o SDK do Cloud. Para mais informações sobre como iniciar o Cloud Shell, consulte a documentação dele.

  1. Crie a instância:
    gcloud sql instances create INSTANCE_NAME --database-version=POSTGRES_12
     --cpu=NUMBER_CPUS --memory=MEMORY_SIZE
     --region=REGION --gce-zone=GCE_ZONE --zone=ZONE
    
    Como alternativa, é possível usar a sinalização "--tier" se você escolher db-f1-micro ou db-g1-small como o tipo de máquina:
    gcloud sql instances create INSTANCE_NAME --tier=API_TIER_STRING --region=REGION
    

    Há restrições quanto ao valor das vCPUs e tamanho de memória:

    • O valor das vCPUs precisa ser 1 ou um número par entre 2 e 96.
    • A memória precisa:
      • ter 0,9 a 6,5 GB por vCPU;
      • ser um múltiplo de 256 MB;
      • ter pelo menos 3,75 GB (3840 MB).

    Por exemplo, a string a seguir cria uma instância com duas vCPUs e 7.680 MB de memória:

     gcloud sql instances create myinstance --database-version=POSTGRES_12 --cpu=2
     --memory=7680MB --region=us-central
    
    Consulte Configuração da instância flexível para mais informações sobre como dimensionar --cpu e --memory.

    O valor padrão de REGION é us-central.

    Não inclua informações confidenciais ou de identificação pessoal no nome da sua instância. Elas são visíveis externamente.
    Não é necessário incluir o ID do projeto no nome da instância. Isso é feito automaticamente quando necessário, como nos arquivos de registros.

    Se você estiver criando uma instância para alta disponibilidade, especifique as zonas primária e secundária usando os parâmetros --zone e --secondary-zone. As condições a seguir se aplicam quando a zona secundária é usada durante a criação ou edição da instância:

    • As zonas precisam ser válidas.
    • Se a zona secundária for especificada, a primária também precisará ser especificada.
    • Se as zonas primária e secundária forem especificadas, elas precisarão ser zonas diferentes.
    • Se as zonas primária e secundária forem especificadas, elas precisarão pertencer à mesma região.

    Adicione mais parâmetros para determinar outras configurações da instância:

    Configuração Parâmetro Observações
    Parâmetros obrigatórios
    Versão do banco de dados --database-version POSTGRES_13 (padrão), POSTGRES_12, POSTGRES_11, POSTGRES_10 ou POSTGRES_9_6
    Região --region Consulte os valores válidos.
    Conectividade
    IP particular --network Especifica o nome da rede VPC que você quer usar para a instância. O acesso a serviços particulares já precisa estar configurado na rede. Disponível apenas para o comando Beta (gcloud beta sql instances create). Saiba mais.
    IP público --authorized-networks Nas conexões de IP público, apenas as conexões de redes autorizadas podem se conectar à instância. Saiba mais.
    Tipo de máquina e armazenamento
    Tipo de máquina --tier Usado para especificar uma instância de núcleo compartilhado (db-f1-micro ou db-g1-small). Para uma configuração de instância flexível, use os parâmetros --cpu ou --memory. Consulte Configuração da instância flexível.
    Tipo de armazenamento --storage-type Determina se a instância usa armazenamento SSD ou HDD. Saiba mais.
    Capacidade de armazenamento --storage-size Quantidade de armazenamento provisionada para a instância em GB.Saiba mais.
    Aumento automático de armazenamento --storage-auto-increase Determina se o Cloud SQL fornece automaticamente mais armazenamento para sua instância quando há pouco espaço livre. Saiba mais.
    Limite de aumento automático de armazenamento --storage-auto-increase-limit Determina o quanto o Cloud SQL pode expandir o armazenamento automaticamente. Disponível apenas para o comando Beta (gcloud beta sql instances create). Saiba mais.
    Backups automáticos e alta disponibilidade
    Alta disponibilidade --availability-type Para uma instância altamente disponível, defina como REGIONAL. Saiba mais.
    Zona secundária --secondary-zone Se você estiver criando uma instância para alta disponibilidade, especifique as zonas primária e secundária usando >--zone e --secondary-zone parameters. As restrições a seguir se aplicam quando a zona secundária é usada durante a criação ou edição da instância:
    • As zonas precisam ser válidas.
    • Se a zona secundária for especificada, a primária também precisará ser especificada.
    • Se as zonas primária e secundária forem especificadas, elas precisarão ser zonas diferentes.

      Se as zonas primária e secundária forem especificadas, elas precisarão pertencer à mesma região.

    Backups automáticos --backup-start-time A janela do horário que você quer que os backups comecem. Saiba mais.
    Configurações de retenção para backups automáticos --retained-backups-count O número de backups automáticos a serem mantidos. Saiba mais.
    Recuperação pontual --enable-point-in-time recovery Ativa a recuperação pontual e a geração de registros em tempo de gravação. Saiba mais.
    Configurações de retenção para geração de registros binários --retained-transaction-log-days Número de dias para reter registros de gravação para recuperação pontual.Saiba mais.
    Adicionar sinalizações do banco de dados
    Sinalizações do banco de dados --database-flags Você pode usar sinalizações do banco de dados para controlar configurações e parâmetros na instância. Saiba mais sobre as sinalizações do banco de dados.
    Cronograma de manutenção
    Janela de manutenção --maintenance-window-day,
    --maintenance-window-hour
    Determina uma janela de uma hora em que o Cloud SQL pode executar a manutenção disruptiva na instância. Se você não definir a janela, uma manutenção disruptiva poderá ser feita a qualquer momento. Saiba mais.
    Dia/hora da manutenção --maintenance-release-channel Horário de sua preferência para as atualizações de instâncias, em relação a outras instâncias no mesmo projeto. Use preview para atualizações anteriores e production para atualizações posteriores. Saiba mais.

  2. Observe o endereço IP atribuído automaticamente.

    Se não estiver usando o proxy do Cloud SQL Auth, você usará esse endereço como o endereço do host que os aplicativos ou as ferramentas usam para se conectar à instância.

  3. Defina a senha do usuário postgres:
    gcloud sql users set-password postgres --instance=INSTANCE_NAME --password=PASSWORD
    

REST v1beta4

Criar instância

Este exemplo cria uma instância com backups e geração de registros binários ativados. Essas configurações são opcionais. Para ver uma lista completa de parâmetros dessa chamada, consulte a página Instances:insert. Para informações sobre configurações da instância, incluindo valores válidos para a região, consulte Configurações de instância.

Não inclua informações confidenciais ou de identificação pessoal no ID da instância. Elas são visíveis externamente.
Não é necessário incluir o ID do projeto no nome da instância. Isso é feito automaticamente quando necessário, como nos arquivos de registros.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância buscada
  • region: a região desejada
  • database-version: string de enum da versão do banco de dados. Por exemplo: POSTGRES_12
  • password: a senha do usuário raiz
  • machine-type: string de enum do tipo de máquina (camada), como: db-custom-[CPUS]-[MEMORY_MBS]

Método HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

Corpo JSON da solicitação:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "rootPassword": "password",
  "settings": {
    "tier": "machine-type",
    "backupConfiguration": {
      "enabled": true
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

A resposta é uma operação de longa duração, que pode levar alguns minutos para ser concluída.

Recuperar o endereço IPv4

Recupere o endereço IPv4 atribuído automaticamente à nova instância:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância criado na etapa anterior

Método HTTP e URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_5_7",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "us-west1-a",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "18:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
      "binaryLogEnabled": true
    },
    "settingsVersion": "1",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "--redacted--",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    ...
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "us-west1",
  "gceZone": "us-west1-a"
}

Procure o campo ipAddress na resposta.

Para ver como a solicitação de API REST de base é criada nesta tarefa, consulte a página APIs Explorer em instances:insert.

Configurações da instância flexíveis

Com as configurações da instância flexíveis, você seleciona a quantidade de memória e CPUs necessárias para a instância. Essa flexibilidade permite escolher o formato de VM apropriado para a carga de trabalho. Os nomes de tipo de máquina usam o formato db-custom-CPU-RAM, em que CPU é o número de CPUs na máquina e RAM é a quantidade de memória na máquina.

Ao selecionar o número de CPUs e a quantidade de memória, há algumas restrições à configuração escolhida:

  • O valor das vCPUs precisa ser 1 ou um número par entre 2 e 96.
  • A memória precisa:
    • ter 0,9 a 6,5 GB por vCPU;
    • ser um múltiplo de 256 MB;
    • ter pelo menos 3,75 GB (3840 MB).

Solução de problemas

Clique nos links da tabela para ver detalhes:

Para este problema... O problema pode ser... Tente o seguinte...
Internal error. Não há conta de serviço da rede de serviço. Desative e reative o Service Networking API.
Falha na criação da instância do Terraform. Erro de configuração do Terraform. Inspecione e repare o arquivo de configuração do Terraform.
HTTP Error 409 no script do Terraform. Outra operação já está em andamento. Corrija o script do Terraform para aguardar a conclusão de cada operação.
Unknown error

A API Service Networking pode não estar ativada.

Talvez você esteja tentando criar uma instância com o mesmo nome de outra excluída recentemente.

Talvez você esteja tentando criar várias instâncias simultaneamente.

Ative a API Service Networking.

Use um nome diferente para a instância ou aguarde uma semana após a instância ser excluída.

Crie instâncias consecutivas.

Veja outras mensagens de Erro desconhecido caso esta não corresponda ao seu caso.

Failed to create subnetwork Não há mais endereços disponíveis no intervalo de IP. Alocar novos intervalos.

Erro interno

Você vê a mensagem de erro {"ResourceType":"sqladmin.v1beta4.instance", "ResourceErrorCode":"INTERNAL_ERROR","ResourceErrorMessage":null}.

O problema pode ser

O projeto de serviço provavelmente não tem a conta de serviço da rede de serviço necessária para esse recurso.

O que você pode tentar

Para corrigir as permissões do serviço, desative o Service Networking API, aguarde cinco minutos e reative-o.


Falha na criação da instância do Terraform

Falha na criação da instância do Terraform.

O problema pode ser

Isso geralmente é um problema no próprio script do Terraform.

O que você pode tentar

Inspecione e repare o arquivo de configuração do Terraform.


Erro 409 no script do Terraform

Você verá a mensagem de erro HTTP Error 409 nos scripts do Terraform.

O problema pode ser

Operation failed because another operation was already in progress

O que você pode tentar

Revise o script para interromper a execução até que cada operação da instância seja concluída. Antes de continuar para a próxima etapa, faça uma pesquisa com o script e aguarde até que um 200 seja retornado para o ID da operação anterior.


Erro desconhecido

Ao tentar criar uma instância, você vê uma mensagem de erro como Cloud SQL creation failed, error UNKNOWN.

Possível problema

  • A API Service Networking pode não estar ativada.
  • Talvez você esteja tentando reutilizar o nome de uma instância excluída recentemente. Os nomes das instâncias não podem ser reutilizados por uma semana após a exclusão.
  • Talvez você esteja tentando criar várias instâncias simultaneamente. Nesse caso, apenas a primeira instância é criada e a outra falha com Unknown error. Só é possível executar uma operação de criação por vez

O que você pode tentar

  • Ative a API Service Networking.
  • Use um nome diferente para a instância ou aguarde uma semana para criar uma nova com esse nome.
  • Crie várias instâncias consecutivamente, em vez de simultaneamente.

Falha ao criar sub-rede

Você receberá a mensagem de erro: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider.

Possível problema

Não há mais endereços disponíveis no intervalo de IP alocado.

Se você encontrar esse erro ao tentar criar uma instância do Cloud SQL com IP privado em uma rede VPC compartilhada usando conexões de serviço particular, há cinco cenários possíveis:

  • O tamanho do intervalo de IP alocado para a conexão de serviço particular é menor que /24.
  • O tamanho do intervalo de IP alocado para a conexão de serviço particular é muito pequeno para o número de instâncias do Cloud SQL.
  • Você está tentando criar instâncias do MySQL ou do SQL Server e do PostgreSQL na mesma conexão de serviço particular no projeto host da VPC. O MySQL e o SQL Server podem compartilhar a mesma conexão de serviço. O PostgreSQL requer uma conexão de serviço própria.
  • Você está tentando criar instâncias na mesma conexão de serviço particular em regiões diferentes, o que não é compatível.

O que você pode tentar

Para cada um dos cenários acima, é possível expandir a opção atual ou alocar um intervalo de IP adicional para a conexão de serviço particular.

Se você estiver alocando um novo intervalo, tome cuidado para não criar uma alocação que se sobreponha a uma alocação existente.

Depois de criar um novo intervalo de IP, atualize o peering vpc com o comando a seguir:

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 você estiver expandindo uma alocação atual, só aumente o intervalo de alocação em vez de diminuí-lo. Por exemplo, se a alocação original for 10.0.10.0/24, faça a nova alocação pelo menos 10.0.10.0/23.

Em geral, se começar com uma alocação de /24, diminuir a /mascaramento por 1 para cada condição (grupo de tipo de instância adicional, região adicional) é uma boa regra geral. Por exemplo, se você tentar criar os dois grupos de tipos de instância na mesma alocação, a mudança de /24 para /23 será suficiente.

Depois de expandir um intervalo de IP atual, use o seguinte comando para atualizar o peering VPC:

gcloud services vpc-peerings update --service=servicenetworking.googleapis.com
--ranges=[RESERVED_RANGE_NAME] --network=[VPC_NETWORK] --project=[PROJECT_ID]

A seguir