Criar instâncias

Nesta página, descrevemos como criar uma instância do Cloud SQL para MySQL.

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

Uma instância recém-criada tem quatro bancos de dados de sistema:

  • information_schema: fornece acesso a metadados do banco de dados e informações sobre o servidor MySQL.
  • mysql: o esquema do sistema. Esse arquivo contém tabelas que armazenam informações exigidas pelo servidor MySQL durante a execução.
  • performance_schema: um recurso para monitorar a execução do MySQL Server em um nível baixo.
  • sys: contém um conjunto de objetos que ajuda os DBAs e os desenvolvedores a interpretar os dados coletados pelo esquema de desempenho.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. 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

Criar uma instância do MySQL

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Clique em Criar instância.
  3. No painel Escolher o mecanismo do banco de dados na página Criar uma instância, clique em Escolher MySQL.
  4. No campo Código da instância do painel Informações da instância, insira um ID para a instância.

    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. Defina uma senha para o usuário raiz.

    Há uma opção para definir Sem senha, mas isso não é recomendado por motivos de segurança.

  6. Para ver a senha em texto não criptografado, clique no ícone Mostrar senha.

    Insira a senha manualmente ou clique em Gerar para que o Cloud SQL crie uma senha automaticamente.
  7. Opcional: configure uma política de senha para a instância da seguinte maneira:

    1. Marque a caixa de seleção Ativar políticas de senha.
    2. Clique no botão Definir política de senha, defina uma ou mais das seguintes opções e clique em Salvar.
      • Comprimento mínimo: especifica o número mínimo de caracteres que a senha precisa ter.
      • Complexidade da senha: verifica se a senha é uma combinação de caracteres minúsculos, maiúsculos, numéricos e não alfanuméricos.
      • Restringir a reutilização de senhas: especifica o número de senhas anteriores que não podem ser reutilizadas.

        Compatível apenas com o Cloud SQL para MySQL 8.0.

      • Bloquear nome de usuário: impede o uso do nome de usuário na senha.
  8. Selecione a versão do banco de dados da sua instância: MySQL 8.0 (padrão), MySQL 5.7 ou MySQL 5.6.
  9. Opcional: selecione Mostrar versões secundárias. Em seguida, escolha uma versão secundária diferente da versão secundária padrão.
  10. A versão do banco de dados não pode ser editada depois que a instância é criada.

  11. Selecione a edição do Cloud SQL para sua instância: Enterprise ou Enterprise plus. Para mais informações sobre as edições do Cloud SQL, consulte Introdução às edições do Cloud SQL.
  12. Na seção Escolher região e disponibilidade por zona, selecione a região e a zona da instância. A disponibilidade da região pode ser diferente com base na edição do Cloud SQL. Para mais informações, consulte Sobre as configurações 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, 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.
  13. Na seção Personalizar a instância, atualize as configurações dela. 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 personalização dessas configurações de instância é opcional. Os padrões são atribuídos em todos os casos em que nenhuma personalização é feita.

    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áquina Selecione entre "Núcleo compartilhado" ou "Núcleo dedicado". Para o núcleo compartilhado, cada tipo de máquina é classificado pelo número de CPUs (núcleos) e a quantidade de memória da instância.
    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
    Personalizado Para o tipo de máquina com núcleo dedicado, em vez de selecionar uma configuração predefinida, selecione o botão Personalizado para criar uma instância com uma configuração personalizada. 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.
    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.
    Opcionalmente, é possível especificar um intervalo de IP alocado para as suas instâncias usarem em conexões.
    1. Expanda Mostrar opção de intervalo de IP alocado.
    2. Selecione um intervalo de IP no menu suspenso.

    A instância pode ter um endereço IP público e um particular.

    IP público Adiciona um endereço IP público à instância. Em seguida, é possível adicionar redes autorizadas para se conectar à instância.

    A instância pode ter um endereço IP público e um particular.

    Saiba mais sobre como usar o IP público.

    Redes autorizadasAdicione o nome da nova rede e o endereço dela. Saiba mais
    Caminho particular para os serviços do Google Cloud

    Ao marcar essa caixa de seleção, você permite que outros serviços do Google Cloud, como o BigQuery, acessem dados no Cloud SQL e façam consultas nesses dados por meio de uma conexão particular.

    Proteção de dados
    Backups automáticos A janela de horário em 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.
    Ativar proteção contra exclusão Determina se uma instância será protegida contra exclusão acidental. Saiba mais.
    Escolha quantos dias de registros serão retidos Configure a retenção de registros em tempo de gravação de um a sete 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 parâmetros na instância. Saiba mais.
    Marcadores
    ADICIONAR MARCADORAdicione uma chave e um valor para cada rótulo adicionado. Use rótulos para ajudar a organizar suas instâncias.
    Cache de dados
    Ativar cache de dados (opcional) Ativa o cache de dados para instâncias do Cloud SQL para MySQL Enterprise Plus. Para mais informações sobre cache de dados, consulte cache de dados.
  14. Clique em Criar instância.

    Observação: pode levar alguns minutos para criar sua instância. No entanto, é possível visualizar informações sobre a instância enquanto ela está sendo criada.

gcloud

Para informações sobre como instalar e começar a usar a CLI gcloud, consulte Como instalar a CLI gcloud. Para mais informações sobre como iniciar o Cloud Shell, consulte a documentação dele.

  1. Use o comando gcloud sql instances create para criar a instância:
    Para instâncias da edição Cloud SQL Enterprise Plus:
    gcloud sql instances create INSTANCE_NAME \
    --region=REGION \
    --tier=TIER \
    --database-version=MYSQL_8_0_31 \
    --edition=ENTERPRISE_PLUS

    Para instâncias do Cloud SQL Enterprise:
    gcloud sql instances create INSTANCE_NAME \
    --cpu=NUMBER_CPUS \
    --memory=MEMORY_SIZE \
    --region=REGION
    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 do Cloud SQL Enterprise com duas vCPUs e 7.680 MB de memória:

    gcloud sql instances create myinstance \
    --database-version=MYSQL_8_0 \
    --cpu=2 \
    --memory=7680MB \
    --region=us-central1

    A string a seguir cria uma instância do Cloud SQL Enterprise Plus com quatro núcleos:

    gcloud sql instances create myinstance \
    --database-version=MYSQL_8_0_31 \
    --tier=db-perf-optimized-N-4 \
    --edition=ENTERPRISE_PLUS \
    --region=us-central1

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

    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 A versão do banco de dados, que é baseada na edição do Cloud SQL.
    Região --region Consulte os valores válidos.
    Definir política de senha
    Ativar política de senha --enable-password-policy Ativa a política de senha quando usada. Por padrão, a política de senha fica desativada. Quando desativados usando o parâmetro --clear-password-policy, os outros parâmetros da política de senha são redefinidos.
    Tamanho mínimo --password-policy-min-length Especifica o número mínimo de caracteres que a senha precisa ter.
    Complexidade da senha --password-policy-complexity Ativa a verificação de complexidade da senha para garantir que ela contenha um destes tipos de caractere: minúsculas, maiúsculas, numéricas e não alfanuméricas. Definir o valor como COMPLEXITY_DEFAULT.
    Restringir a reutilização de senhas --password-policy-reuse-interval Especifica o número de senhas anteriores que não podem ser reutilizadas. Compatível apenas com o Cloud SQL para MySQL 8.0.
    Nome de usuário não permitido --password-policy-disallow-username-substring Impede o uso do nome de usuário na senha. Use o parâmetro --no-password-policy-disallow-username-substring para desativar a verificação.
    Conectividade
    IP privado --network

    --no-assign-ip (opcional)

    --allocated-ip-range-name (opcional)

    --enable-google-private-path (opcional)

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

    --no-assign-ip: a instância terá apenas um endereço IP particular.

    --allocated-ip-range-name: se especificado, define um nome de intervalo para o qual um intervalo de IP é alocado. Por exemplo, google-managed-services-default. O nome do intervalo precisa obedecer a RFC-1035 e ter de 1 a 63 caracteres. (gcloud alpha sql instances create).

    --enable-google-private-path: se você usar esse parâmetro, permitirá que outros serviços do Google Cloud, como o BigQuery, acessem dados no Cloud SQL e façam consultas nesses dados em uma conexão particular.

    Esse parâmetro só será válido se:

    • Use o parâmetro --no-assign-ip.
    • Use o parâmetro --network para especificar o nome da rede VPC que você quer usar para criar uma conexão particular.

    Saiba mais sobre como configurar o IP particular.

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

    --ssl-mode

    --require-ssl

    O parâmetro ssl-mode determina a aplicação SSL/TLS para as conexões. Para mais informações, consulte Configurações do Cloud SQL para MySQL.

    O parâmetro require-ssl determina se as conexões SSL por IP serão aplicadas ou não. require-ssl é um parâmetro legado. Em vez disso, use ssl-mode. Para mais informações, consulte IpConfiguration.

    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 personalizada, use os parâmetros --cpu ou --memory. Consulte Configuração da instância personalizada.
    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.
    Cache de dados (opcional) --enable-data-cache Ativa ou desativa o cache de dados para as instâncias. Para mais informações, consulte cache de dados.
    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, poderá especificar 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 de horário em 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.
    Geração de registros binários --enable-bin-log A geração de registros binários permite a replicação e recuperação com horários definidos. Saiba mais.
    Configurações de retenção para geração de registros binários --retained-transaction-log-days O número de dias de retenção de registros binários 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. Saiba mais sobre como formatar este parâmetro.
    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 para o usuário MySQL "root@%":
    gcloud sql users set-password root \
    --host=% \
    --instance INSTANCE_NAME \
    --password PASSWORD

Terraform

Para criar uma instância, use um recurso do Terraform.

resource "google_sql_database_instance" "mysql_pvp_instance_name" {
  name             = "mysql-pvp-instance-name"
  region           = "asia-northeast1"
  database_version = "MYSQL_8_0"
  root_password    = "abcABC123!"
  settings {
    tier = "db-f1-micro"
    password_validation_policy {
      min_length                  = 6
      complexity                  = "COMPLEXITY_DEFAULT"
      reuse_interval              = 2
      disallow_username_substring = true
      enable_password_policy      = true
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplique as alterações

Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.

    Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Preparar o diretório

Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.

  1. No Cloud Shell, crie um diretório e um novo arquivo dentro dele. O nome do arquivo precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

    Copie o exemplo de código no main.tf recém-criado.

    Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção -upgrade:

    terraform init -upgrade

Aplique as alterações

  1. Revise a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expectativas:
    terraform plan

    Faça as correções necessárias na configuração.

  2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  3. Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.

Excluir as alterações

Para excluir as mudanças, faça o seguinte:

  1. Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo yes no prompt:

    terraform destroy

REST v1

Criar instância

Este exemplo cria uma instância. Alguns parâmetros opcionais, como backups e geração de registros binários, também estão incluídos. 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 região, consulte Configurações da 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: ID do projeto;
  • INSTANCE_ID: o ID da sua instância
  • DATABASE_VERSION: a versão do banco de dados. Por exemplo, MYSQL_8_0 ou MYSQL_8_0_31.
  • REGION: a região
  • MACHINE_TYPE: o tipo de máquina
  • EDITION_TYPE: sua edição do Cloud SQL
  • DATA_CACHE_ENABLED: (opcional) defina como true para ativar o cache de dados na instância
  • PRIVATE_NETWORK: especifique o nome da rede de nuvem privada virtual (VPC) que você quer usar para essa instância. O acesso a serviços particulares já precisa estar configurado na rede.
  • AUTHORIZED_NETWORKS: para conexões de IP público, especifique as conexões de redes autorizadas que podem se conectar à instância.

Para definir uma política de senha ao criar uma instância, inclua o objeto passwordValidationPolicy na solicitação. Defina os seguintes parâmetros, conforme necessário:

  • enablePasswordPolicy: ativa a política de senha quando definida como true.

    Para remover a política de senha, use uma solicitação PATCH com null como o valor de enablePasswordPolicy. Nesse caso, os outros parâmetros da política de senha serão redefinidos.

  • minLength: especifica o número mínimo de caracteres que a senha precisa ter.
  • complexity: verifica se a senha é uma combinação de caracteres minúsculos, maiúsculos, numéricos e não alfanuméricos. O valor padrão é COMPLEXITY_DEFAULT.
  • reuseInterval: especifica o número de senhas anteriores que não podem ser reutilizadas.

    Compatível apenas com o Cloud SQL para MySQL 8.0.

  • disallowUsernameSubstring: impede o uso do nome de usuário na senha quando definido como true.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Corpo JSON da solicitação:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "dataCacheConfig" = {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true
    },
    "passwordValidationPolicy": {
      "enablePasswordPolicy": true
      "minLength": "MIN_LENGTH",
      "complexity": COMPLEXITY_DEFAULT,
      "reuseInterval": "REUSE_INTERVAL",
      "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
    }
    "ipConfiguration": {
      "privateNetwork": "PRIVATE_NETWORK",
      "authorizedNetworks": [AUTHORIZED_NETWORKS],
      "ipv4Enabled": false,
      "enablePrivatePathForGoogleCloudServices": 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/v1/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://sqladmin.googleapis.com/v1/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.

Atualize a senha raiz

Quando a inicialização da instância for concluída, atualize a senha raiz:

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

  • project-id: ID do projeto
  • instance-id: o ID da instância criado na etapa anterior
  • root-password: senha raiz escolhida

Método HTTP e URL:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=%25&name=root

Corpo JSON da solicitação:

{
  "name": "root",
  "host": "%",
  "password": "root-password"
}

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/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2019-09-26T14:32:30.592Z",
  "startTime": "2019-09-26T14:32:30.594Z",
  "endTime": "2019-09-26T14:32:33.518Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

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: ID do projeto
  • instance-id: o ID da instância criado na etapa anterior

Método HTTP e URL:

GET https://sqladmin.googleapis.com/v1/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_8_0_18",
  "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/v1/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.

REST v1beta4

Criar instância

Este exemplo cria uma instância. Alguns parâmetros opcionais, como backups e geração de registros binários, também estão incluídos. 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: ID do projeto;
  • INSTANCE_ID: o ID da sua instância
  • DATABASE_VERSION: a versão do banco de dados. Por exemplo, MYSQL_8_0 ou MYSQL_8_0_31.
  • REGION: a região
  • MACHINE_TYPE: o tipo de máquina
  • EDITION_TYPE: sua edição do Cloud SQL
  • DATA_CACHE_ENABLED: (opcional) defina como true para ativar o cache de dados na instância

Para definir uma política de senha ao criar uma instância, inclua o objeto passwordValidationPolicy na solicitação. Defina os seguintes parâmetros, conforme necessário:

  • enablePasswordPolicy: ativa a política de senha quando definida como true.

    Para remover a política de senha, use uma solicitação PATCH com null como o valor de enablePasswordPolicy. Nesse caso, os outros parâmetros da política de senha serão redefinidos.

  • minLength: especifica o número mínimo de caracteres que a senha precisa ter.
  • complexity: verifica se a senha é uma combinação de caracteres minúsculos, maiúsculos, numéricos e não alfanuméricos. O valor padrão é COMPLEXITY_DEFAULT.
  • reuseInterval: especifica o número de senhas anteriores que não podem ser reutilizadas.

    Compatível apenas com o Cloud SQL para MySQL 8.0.

  • disallowUsernameSubstring: impede o uso do nome de usuário na senha quando definido como true.

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",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "dataCacheConfig" {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true
    },
    "passwordValidationPolicy": {
      "enablePasswordPolicy": true
      "minLength": "MIN_LENGTH",
      "complexity": COMPLEXITY_DEFAULT,
      "reuseInterval": "REUSE_INTERVAL",
      "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
    }
  }
}

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": "2019-09-25T22:19:33.735Z",
  "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.

Atualize a senha raiz

Quando a inicialização da instância for concluída, atualize a senha raiz:

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

  • project-id: ID do projeto
  • instance-id: o ID da instância criado na etapa anterior
  • root-password: senha raiz escolhida

Método HTTP e URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=root

Corpo JSON da solicitação:

{
  "name": "root",
  "host": "%",
  "password": "root-password"
}

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2019-09-26T14:32:30.592Z",
  "startTime": "2019-09-26T14:32:30.594Z",
  "endTime": "2019-09-26T14:32:33.518Z",
  "operationType": "UPDATE_USER",
  "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: 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_8_0_18",
  "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.

Especificar a versão secundária do banco de dados

É possível especificar a versão secundária de uma instância atual usando gcloud ou a API REST.

gcloud

Use o comando gcloud sql instances create com a sinalização --database-version.

Substitua as seguintes variáveis antes de executar o comando:

  • INSTANCE_NAME: o nome da instância
  • DATABASE_VERSION: a versão secundária do banco de dados da instância: MYSQL_8_0_18, MYSQL_8_0_26, MYSQL_8_0_27, MYSQL_8_0_28, MYSQL_8_0_29, MYSQL_8_0_30, MYSQL_8_0_31 (versão secundária padrão para MySQL 8.0), MYSQL_8_0_32 ou MYSQL_8_0_33. Se você especificar MYSQL_8_0, será usada a versão secundária padrão. Se você não especificar essa sinalização, a versão principal padrão, MYSQL_8_0, será usada.
gcloud sql instances create INSTANCE_NAME \
--database-version=DATABASE_VERSION

Para informações detalhadas, consulte a documentação sobre como criar uma instância usando gcloud.

REST v1

Use uma solicitação POST com o método instances:insert e a sinalização databaseVersion.

    POST https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances
Antes de usar qualquer um dos dados da solicitação, substitua estas variáveis:
  • project_id: o ID do projeto
  • instance_id: o nome da instância
  • databaseVersion: a versão do banco de dados da instância: MYSQL_8_0_18, MYSQL_8_0_26, MYSQL_8_0_27, MYSQL_8_0_28, MYSQL_8_0_29, MYSQL_8_0_30, MYSQL_8_0_31 (versão secundária padrão para MySQL 8.0), MYSQL_8_0_32 ou MYSQL_8_0_33. Se você especificar MYSQL_8_0, será usada a versão secundária padrão. Se você não especificar essa sinalização, a versão principal padrão, MYSQL_8_0, será usada.

Para informações detalhadas, consulte a documentação sobre como criar uma instância usando a API REST v1.

REST v1beta4

Use uma solicitação POST com o método instances:insert e a sinalização databaseVersion.

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

Antes de usar qualquer um dos dados da solicitação, substitua estas variáveis:

  • project_id: o ID do projeto
  • instance_id: o nome da instância
  • databaseVersion: a versão do banco de dados da instância: MYSQL_8_0_18, MYSQL_8_0_26, MYSQL_8_0_27, MYSQL_8_0_28, MYSQL_8_0_29, MYSQL_8_0_30, MYSQL_8_0_31 (versão secundária padrão para MySQL 8.0), MYSQL_8_0_32 ou MYSQL_8_0_33. Se você especificar MYSQL_8_0, será usada a versão secundária padrão. Se você não especificar essa sinalização, a versão principal padrão, MYSQL_8_0, será usada.

Para informações detalhadas, consulte a documentação sobre como criar uma instância usando a API REST v1beta4.

Versão secundária do banco de dados para réplicas de leitura, clones e PITR

Ao criar uma réplica de leitura, é possível especificar a versão secundária do banco de dados da réplica de leitura. Por padrão, novas réplicas de leitura são criadas na versão secundária padrão.

Ao clonar uma instância, a instância recém-criada tem a mesma versão secundária que a origem.

Ao executar uma recuperação pontual, a instância recém-criada tem a mesma versão secundária do banco de dados que a da origem.

Configurações de instâncias personalizadas

Determina os núcleos virtuais e de memória disponíveis para a instância do Cloud SQL. A disponibilidade do tipo de máquina é determinada pela edição do Cloud SQL.

Para cargas de trabalho que exigem processamento em tempo real, como processamento de transações on-line (OLTP, na sigla em inglês), verifique se a instância tem memória suficiente para conter todo o conjunto de trabalho. No entanto, há outros fatores que podem afetar os requisitos de memória, como o número de conexões ativas e os processos de sobrecarga interna. Realize o teste de carga para evitar problemas de desempenho no seu ambiente de produção.

Ao configurar a instância, selecione memória e vCPUs suficientes para processar a carga de trabalho e faça o upgrade à medida que a carga de trabalho aumenta. Uma configuração de máquina com vCPUs insuficientes pode perder a cobertura do SLA. Para mais informações, consulte as diretrizes operacionais.

Tipos de máquina para instâncias da edição Cloud SQL Enterprise Plus

Para instâncias da edição Enterprise Plus do Cloud SQL, os tipos de máquina são predefinidos da seguinte maneira:

Tipo de máquina da edição Enterprise Plus vCPUs Memória (GB) SSD local
db-perf-optimized-N-2 2 16 375
db-perf-optimized-N-4 4 32 375
db-perf-optimized-N-8 8 64 375
db-perf-optimized-N-16 16 128 750
db-perf-optimized-N-32 32 256 1.500
db-perf-optimized-N-48 48 384 3000
db-perf-optimized-N-64 64 512 6.000
db-perf-optimized-N-80 80 640 6.000
db-perf-optimized-N-96 96 768 6.000
db-perf-optimized-N-128 128 864 9000

Tipos de máquina para instâncias da edição Cloud SQL Enterprise

Para instâncias do Cloud SQL Enterprise, também é possível criar configurações de instância personalizadas usando o comando gcloud sql instances create. Com as configurações de 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 dos tipos de máquina usam o seguinte formato: db-custom-#-#

Substitua o primeiro marcador # pelo número de CPUs na máquina e o segundo marcador # pela quantidade de memória na máquina.

Por exemplo, se o nome da máquina for db-custom e tiver 1 CPU e 3.840 MB de RAM, o formato será db-custom-1-3840.

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

A tabela a seguir lista os nomes de cada tipo de máquina legado, o número de CPUs e RAM de cada tipo de máquina e a string resultante para do tipo de máquina.

É possível criar o tipo de máquina equivalente especificando a CPU e a RAM equivalentes no Console do Google Cloud usando a CLI gcloud ou especificando db-custom-#-# na API.

Tipo de máquina legada vCPUs Memória (MB) db-custom-CPU-RAM (string do 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

Resolver problemas

Problema Soluçã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 há mais endereços disponíveis no intervalo de IP alocado. Pode haver vários 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.
  • O requisito sobre o tamanho do intervalo de IP alocado será maior se as instâncias forem criadas em várias regiões. Consulte tamanho do intervalo alocado.

Para resolver esse problema, é possível expandir o intervalo de IP alocado existente ou alocar um intervalo de IP adicional para a conexão de serviço particular. Para mais informações, consulte Alocar um intervalo de endereços IP.

Se você usou a sinalização --allocated-ip-range-name ao criar a instância do Cloud SQL, só vai poder expandir o intervalo de IP especificado.

Se você estiver alocando um novo intervalo, tenha cuidado para que a alocação não se sobreponha a nenhuma alocação atual.

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 o /mascaramento em 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
    
Mensagem de erro: Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID] Tente criar a instância do Cloud SQL novamente.
Mensagem de erro: Failed to create subnetwork. Required 'compute.projects.get' permission for PROJECT_ID Quando você cria uma instância usando um endereço IP privado, uma conta de serviço é criada no momento certo usando a API Service Networking. Se você ativou recentemente a API Service Networking, a conta de serviço pode não ser criada e a criação da instância falhará. Nesse caso, você precisa esperar a conta de serviço se propagar pelo sistema ou adicioná-la manualmente com as permissões necessárias.

A seguir

  1. Crie um banco de dados MySQL na instância.
  2. Crie usuários MySQL na instância.
  3. Proteja e controle o acesso à instância.
  4. Conecte-se à instância com um cliente MySQL.
  5. Importar dados para o banco de dados.