Exportar um arquivo SQL

Esta página descreve como exportar dados de clusters do AlloyDB para PostgreSQL para arquivos dump SQL.

Para informações sobre como migrar um banco de dados inteiro de um servidor de banco de dados com suporte para uma nova instância do AlloyDB, consulte Migrar um banco de dados para o AlloyDB usando o Database Migration Service. Se você estiver exportando porque quer criar uma nova instância a partir do arquivo exportado, considere restaurar um cluster de um backup armazenado.

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

Antes de começar

  • Antes de iniciar uma operação de exportação, lembre-se de que as operações de exportação usam recursos do banco de dados, mas não interferem nas operações padrão do banco de dados, a menos que a instância tenha um provisionamento menor do que deveria ser.
  • As cobranças por transferência de dados entre regiões são aplicadas quando o bucket de destino está em uma região diferente do cluster de origem. Para mais informações, consulte Preços do AlloyDB para PostgreSQL.
  • A compactação será ativada se o nome do objeto terminar com a extensão .gz. O objeto é exportado no formato .gz para o Cloud Storage.
  • Várias operações de exportação podem ser executadas em paralelo.

Permissões e papéis necessários para exportar do AlloyDB

Para exportar dados do AlloyDB para o Cloud Storage, o usuário que inicia a exportação precisa ter um dos seguintes papéis do Identity and Access Management (IAM):

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

  • O papel storage.objectAdmin do IAM
  • Um papel personalizado, incluindo as permissões storage.objects.create

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

Exportar dados do AlloyDB para um arquivo dump SQL

Ao usar o AlloyDB para fazer uma exportação, seja pela CLI gcloud ou pela API, você está usando o utilitário pg_dump com as opções necessárias para garantir que o arquivo de exportação resultante seja válido para importação no AlloyDB.

Para exportar dados de um banco de dados em um cluster do AlloyDB para um arquivo de despejo SQL em um bucket do Cloud Storage, siga estas etapas:

gcloud

  1. Crie um bucket do Cloud Storage.
  2. Use o formato fornecido para identificar a conta de serviço do projeto que você está exportando. O formato da conta de serviço é o seguinte:

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

    Conceda permissões da conta de serviço ao bucket do Cloud Storage para a operação de exportação.

  3. Use gcloud storage buckets add-iam-policy-binding para conceder o papel do IAM storage.objectAdmin à conta de serviço. Para receber ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do IAM.

  4. Exporte o banco de dados para seu bucket do Cloud Storage. A lista a seguir mostra opções para exportar dados em um formato de dump SQL:

    • --async (opcional): retorna imediatamente, sem aguardar a conclusão da operação em andamento.
    • --tables (opcional): tabelas para exportar.
    • --schema-only (opcional): se definido, exporta apenas o esquema.
    • --clean-target-objects (opcional): se definido, os comandos de saída vão DROP todos os objetos de banco de dados despejados antes de gerar os comandos para criá-los.
    • --if-exist-target-objects (opcional): se definido, use os comandos DROP ... IF EXISTS para verificar a existência do objeto antes de deixá-lo no modo --clean-target-objects.

    Para usar esses recursos, inclua essas opções no comando gcloud. Se você quiser exportar apenas definições de objeto (esquema) e nenhum dado, use a flag –-schema-only. Para especificar quais tabelas serão exportadas, use a flag --tables=TABLE_NAMES. É possível especificar valores separados por vírgula de nomes de tabelas ou padrões de curinga para especificar várias tabelas.

    Caso contrário, remova esses parâmetros do comando:

    gcloud alloydb clusters export CLUSTER_NAME
      --region=REGION
      --database=DATABASE_NAME
      --gcs-uri="gs://BUCKET_NAME/OBJECT_NAME"
      --tables=TABLE_NAMES
      --schema-only
      --clean-target-objects
      --if-exist-target-objects
      --sql

    O comando alloydb clusters export não contém gatilhos ou procedimentos armazenados, mas tem visualizações. Para exportar gatilhos ou procedimentos armazenados, use o utilitário pg_dump.

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

  5. Se você não precisar manter o papel do IAM definido anteriormente, revogue o papel agora.

REST v1

  1. Crie um bucket para a exportação:

    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
  2. Use o formato da conta de serviço para identificar a conta de serviço do projeto que você está exportando.

    O formato da conta de serviço é o seguinte:

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

    Conceda permissões à conta de serviço para o bucket do Cloud Storage na operação de exportação.

  3. Use gcloud storage buckets add-iam-policy-binding para conceder o papel do IAM storage.objectAdmin à conta de serviço. Para receber ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do IAM.

  4. Exporte seu banco de dados.

    Use o método HTTP e o URL a seguir:

    POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export

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

    • PROJECT_ID: o ID do projeto;
    • REGION: a região em que o cluster do AlloyDB é 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 dump SQL.
    • DATABASE_NAME: o nome de um banco de dados dentro da instância do AlloyDB.
    • TABLES: tabelas para exportar.
    • SCHEMA_ONLY: se true, exporta apenas o esquema.
    • CLEAN_TARGET_OBJECTS: se true, gera comandos para DROP todos os objetos de banco de dados despejados antes de gerar os comandos para criá-los.
    • IF_EXIST_TARGET_OBJECTS: se true, use comandos DROP ... IF EXISTS para verificar a existência do objeto antes de deixá-lo no modo clean_target_objects.

    Para usar esses recursos, defina os valores dos parâmetros como true. Caso contrário, defina os valores como false. Se você quiser exportar apenas definições de objetos (esquema) e nenhum dado, use a flag schema_only. Para especificar quais tabelas serão exportadas, use o campo tables. É possível selecionar várias tabelas fornecendo uma lista de nomes de tabelas separados por vírgulas ou escrevendo caracteres curinga no padrão.

    Solicitar corpo JSON:

    {
      "gcs_destination": {
        "uri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE"
      },
      "database": "DATABASE_NAME",
      "sql_export_options": {
        "schema_only": true,
        "tables": [
         "TABLE1",
         "TABLE2"
        ],
        "clean_target_objects": false,
        "if_exist_target_objects": true
      }
    }
    

    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 chamado request.json e execute o comando a seguir:

       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/REGION/clusters/CLUSTER_ID:export"
       

    PowerShell (Windows)

    Salve o corpo da solicitação em um arquivo chamado 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/REGION/clusters/CLUSTER_ID:export"| Select-Object -Expand Content
       

    Você recebe uma resposta JSON semelhante a esta:

    Resposta

    {
      "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
        "createTime": "2024-09-17T06:05:31.244428646Z",
        "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
        "verb": "export",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    
  5. Se você não precisar manter o papel do IAM definido anteriormente, remova-o agora.

Para conferir a lista completa de parâmetros da solicitação, consulte clusters:export.

A seguir