Importar um arquivo SQL

Para reconstruir um banco de dados com base em um script de texto simples de comandos SQL, importe um arquivo SQL armazenado em um bucket do Cloud Storage para um cluster do AlloyDB para PostgreSQL.

É possível cancelar a importação de dados para clusters do AlloyDB. Para mais informações, consulte Cancelar uma operação de importação.

Ao importar arquivos dump SQL, verifique se a versão do PostgreSQL em que o dump foi criado é compatível com a versão do PostgreSQL da instância do AlloyDB. A importação de um arquivo dump de uma versão mais recente para uma mais antiga pode falhar devido à sintaxe SQL incompatível.

Antes de começar

Antes de iniciar uma operação de importação:

  • Verifique se o banco de dados tem cota de armazenamento adequada.
  • As operações de importação usam recursos do banco de dados, mas não interferem nas operações normais do banco de dados, a menos que o cluster tenha um provisionamento menor do que deveria ser.

Papéis e permissões necessários para importar para o AlloyDB

Para importar dados do Cloud Storage para o AlloyDB, o usuário que inicia a importação precisa ter um dos seguintes papéis:

Além disso, a conta de serviço do cluster do AlloyDB precisa ter um dos seguintes papéis:

  • O papel storage.objectViewer do IAM
  • Um papel personalizado, incluindo as seguintes permissões:
    • storage.objects.get

Para receber ajuda com os papéis do IAM, consulte Identity and Access Management.

Importar um arquivo SQL para clusters do AlloyDB

Para importar dados para um cluster do AlloyDB usando um arquivo SQL, siga estas etapas:

Console

  1. No Google Cloud console, acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome de um cluster para abrir a página Visão geral dele.

  3. Clique em Importar.

  4. Em Formato do arquivo, selecione SQL.

  5. Em Selecionar arquivo de origem, escolha se quer fazer upload de arquivos do seu computador ou selecionar um arquivo de um local do Cloud Storage.

    1. Para fazer upload de um arquivo do seu computador, faça o seguinte:

      1. Selecione Fazer upload de arquivos do computador.
      2. Clique em Procurar ao lado de Selecionar arquivo local para escolher um arquivo SQL na sua máquina local.
      3. Clique em Procurar ao lado de Selecionar local do Cloud Storage para escolher um local do Cloud Storage onde armazenar o arquivo local enviado.
      4. Clique em Fazer upload para enviar o arquivo.
    2. Para selecionar um arquivo SQL que existe em um bucket do Cloud Storage, faça o seguinte:

      1. Selecione Selecionar arquivo do Google Cloud Storage.
      2. Clique em Procurar ao lado de bucket-name/file-name para selecionar um arquivo SQL de um bucket do Cloud Storage.
  6. Selecione o banco de dados em que os dados serão importados no menu suspenso Banco de dados.

    Se o arquivo dump SQL incluir um metacomando \connect (ou \c), ele vai substituir o banco de dados de destino selecionado no console do Google Cloud .

  7. Opcional: para especificar um usuário para a operação de importação, clique em Mostrar opções do usuário e insira o nome de usuário no campo Usuário.

  8. Para iniciar a operação de importação, clique em Importar.

gcloud

  1. Crie um bucket do Cloud Storage.
  2. Faça upload do arquivo SQL no bucket. Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Use gcloud storage buckets add-iam-policy-binding para conceder o papel do IAM storage.objectViewer à conta de serviço do cluster do AlloyDB para o bucket:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.

  4. Importe o arquivo:

    gcloud alloydb clusters import CLUSTER_NAME \
      --region=REGION \
      --database=DATABASE_NAME \
      --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' \
      --user=USERNAME \
      --sql

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • REGION: a região em que o cluster do AlloyDB está implantado.
    • DATABASE_NAME: o nome de um banco de dados dentro do cluster.
    • BUCKET_NAME: o nome do bucket do Cloud Storage.
    • PATH_TO_SQL_FILE: o caminho para o arquivo SQL.
    • USERNAME: o usuário da operação de importação.

    Se o comando retornar um erro como PERMISSION_DENIED, revise as permissões.

    Para informações sobre como usar o comando import, consulte a página de referência do comando gcloud alloydb clusters import.

  5. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as usando gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crie um bucket do Cloud Storage.
  2. Faça upload do arquivo SQL no bucket. Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.
  3. Use gcloud storage buckets add-iam-policy-binding para conceder o papel do IAM storage.objectViewer à conta de serviço do cluster do AlloyDB para o bucket. O formato da conta de serviço é o seguinte:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.

  4. Importe o arquivo SQL.

    Use o seguinte método HTTP e URL:

    POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import

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

    • PROJECT_ID: o ID do projeto;
    • LOCATION_ID: a região em que o cluster do AlloyDB está implantado.
    • CLUSTER_ID: o ID do cluster.
    • BUCKET_NAME: o nome do bucket do Cloud Storage.
    • PATH_TO_SQL_FILE: o caminho para o arquivo SQL.
    • USER: o usuário que será usado para a importação.
    • DATABASE_NAME: o nome de um banco de dados dentro do cluster do AlloyDB.

    Corpo JSON da solicitação:

    {
       "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE",
       "database": "DATABASE_NAME",
       "user": "USER",
       "sqlImportOptions": {}
    }
    

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

    curl (Linux, macOS ou Cloud Shell)

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"
    

    PowerShell (Windows)

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
    

    Você vai receber uma resposta JSON semelhante a esta:

    Resposta

    {
     "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID",
     "metadata": {
      "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
      "createTime": "2025-01-04T13:12:32.363393723Z",
      "target": "projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    

    Para usar um usuário diferente na importação, especifique a propriedade do usuário.

  5. Se você não precisar manter as permissões do IAM definidas anteriormente, remova-as.

    Para ver a lista completa de parâmetros da solicitação, consulte clusters.import.

Verificar o status de uma operação de importação

Para verificar o status de uma operação de importação, siga estas etapas:

gcloud

Execute o seguinte usando o comando gcloud alloydb operations describe:

gcloud alloydb operations describe OPERATION_ID --region=REGION

Também é possível listar detalhes de uma operação específica ou cancelar uma operação específica. Para mais informações sobre esse comando, consulte a página de referência do comando gcloud alloydb operations.

REST v1

Use o método GET e o seguinte URL:

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

Para ver mais informações, consulte get.

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

  • REGION: a região em que o cluster do AlloyDB está implantado.
  • PROJECT_ID: o ID do projeto;
  • OPERATION_ID: o ID da operação de importação. Para mais informações, consulte Antes de começar.

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

curl (Linux, macOS ou Cloud Shell)

Execute o seguinte comando:

  curl -X GET \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
 

PowerShell (Windows)

Execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID" | Select-Object -Expand Content

Se funcionar, o corpo da resposta vai ter uma instância de Operation.

A seguir