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 criá-los ou importá-los.

Antes de começar

  1. Faça login na sua conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do Cloud, na página do seletor de projetos, selecione ou crie um projeto do Cloud.

    Acessar a página do seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como confirmar se a cobrança está ativada para o seu 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.

    Acessar 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, por exemplo.

  5. Digite a senha do usuário postgres.
  6. Em Local, selecione a região e a zona da 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, você não precisa especificar uma zona.

  7. Em Opções de configuração, atualize as configurações da instância:
    Configuração Observações
    Versão do banco de dados
    Versão do banco de dados PostgreSQL 12 (padrão), PostgreSQL 11, PostgreSQL 10 e PostgreSQL 9.6
    Conectividade
    IP particular Adiciona um endereço IP particular à instância. Para ativar a conexão com a instância, é necessário ter configurações extras. .
    IP público Adiciona um endereço IP público à instância. Para ativar a conexão com a instância, é necessário fazer configurações adicionais.
    Tipo de máquina e armazenamento
    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
    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
    Aumento automático de armazenamento Determina se o Cloud SQL fornece automaticamente mais armazenamento para a instância quando há pouco espaço livre. Saiba mais.
    Alta disponibilidade Marque a caixa de seleção Alta disponibilidade (regional) se precisar que a instância seja configurada para alta disponibilidade. Saiba mais.
    Backups automáticos A janela do horário que você quer que os backups comecem. Saiba mais.
    Recuperação pontual Ativa a recuperação pontual e a geração de registros em tempo de gravação. Saiba mais.
    Adicionar sinalizações do banco de dados
    Sinalizações do banco de dados É possível usar sinalizações do banco de dados para controlar configurações e parâmetros na instância. Saiba mais
    Cronograma de manutenção
    Janela de manutenção 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 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.

    Saiba mais sobre configurações de instância.

  8. 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
    
    ou então:
    gcloud sql instances create INSTANCE_NAME --tier=API_TIER_STRING --region=REGION
    

    Os valores de API_TIER_STRING são tipos de máquinas personalizados, definidos aqui. Esses nomes incluem os valores de vCPU e memória. Por exemplo, o tipo de máquina db-custom-2-7680 contém duas vCPUs e memória de 7680 (MB).

    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
    

    Para alguns valores de amostra, consulte Tipos de máquinas de amostra.

    Também é possível criar uma instância de núcleo compartilhado usando --tier db-f1-micro ou --tier db-g1-small e descartar os parâmetros --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 apropriado, como nos arquivos de registros, por exemplo.

    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_12 (padrão)., 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). Não é possível especificar os parâmetros --cpu ou --memory ao usar esse parâmetro.
    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 a 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.
    Backups automáticos --backup-start-time A janela do horário que você quer que os backups comecem. 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.
    Adicionar sinalizações do banco de dados
    Sinalizações do banco de dados --database-flags É possível 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 Cloud SQL Proxy, 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

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 de instância, inclusive valores válidos para a região e o tipo de máquina, 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 apropriado, como nos arquivos de registros, por exemplo.

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 escolhida
  • region: a região escolhida
  • machine-type: o tipo de máquina escolhido

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "name": "instance-id",
  "region": "region",
  "settings": {
    "tier": "machine-type",
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true
    }
  }
}

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

Você receberá uma resposta JSON semelhante à seguinte:

{
  "kind": "sql#operation",
  "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2019-09-25T22:19:33.735Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://www.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://www.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://www.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 da API REST de base é criada nesta tarefa, consulte a página APIs Explorer em "instances:insert".

Exemplos de tipos de máquinas

Com tipos de máquina personalizados, você pode configurar sua instância com a quantidade de memória e CPUs que precisa. No entanto, existem algumas restrições de valores:

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

Veja alguns exemplos de valores, com base nos tipos de máquina predefinidos disponíveis para instâncias do PostgreSQL:

Tipo de máquina predefinido vCPUs Memória (MB) String de nível da API
db-n1-standard-1 1 3.840 db-custom-1-3840
db-n1-standard-2 2 7.680 db-custom-2-7680
db-n1-standard-4 4 15.360 db-custom-4-15360
db-n1-standard-8 8 30.720 db-custom-8-30720
db-n1-standard-16 16 61.440 db-custom-16-61440
db-n1-standard-32 32 122.880 db-custom-32-122880
db-n1-standard-64 64 245.760 db-custom-64-245760
db-n1-standard-96 96 368640 db-custom-96-368640
db-n1-highmem-2 2 13.312 db-custom-2-13312
db-n1-highmem-4 4 26.624 db-custom-4-26624
db-n1-highmem-8 8 53.248 db-custom-8-53248
db-n1-highmem-16 16 106.496 db-custom-16-106496
db-n1-highmem-32 32 212.992 db-custom-32-212992
db-n1-highmem-64 64 425.984 db-custom-64-425984
db-n1-highmem-96 96 638976 db-custom-96-638976

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 Tentativa de criar uma instância com o mesmo nome de uma excluída recentemente. Ou tentativa de criar várias instâncias simultaneamente com o uso de um novo intervalo de IPs privados. Use um nome diferente para a instância ou aguarde uma semana desde que a instância foi excluída. Recrie instâncias com falha consecutivamente usando nomes diferentes.

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

O problema pode ser

É provável que 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. Ou você está tentando criar várias instâncias simultaneamente usando um novo intervalo de IPs privados quando apenas a primeira instância é criada e as outras falham com Unknown error.

O que você deve tentar

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.

A seguir