Exportar e importar arquivos em paralelo,Exportar e importar arquivos em paralelo,Exportar e importar arquivos em paralelo,Exportar e importar arquivos em paralelo

Esta página descreve como exportar e importar arquivos para instâncias do Cloud SQL em paralelo.

Antes de começar

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

  • Certifique-se de que seu banco de dados tenha espaço livre adequado.
  • As operações de exportação e importação usam recursos do banco de dados, mas não interferem nas operações típicas do banco de dados, a menos que a instância esteja subprovisionada.

  • Siga as melhores práticas para exportar e importar dados.
  • Após concluir uma operação de importação, verifique os resultados.

Exportar dados do Cloud SQL para PostgreSQL para vários arquivos em paralelo

As seções a seguir contêm informações sobre como exportar dados do Cloud SQL para PostgreSQL para vários arquivos em paralelo.

Funções e permissões necessárias para exportar dados do Cloud SQL para PostgreSQL para vários arquivos em paralelo

Para exportar dados do Cloud SQL para o Cloud Storage, o usuário que inicia a exportação deve ter uma das seguintes funções:

Além disso, a conta de serviço da instância do Cloud SQL deve ter uma das seguintes funções:

  • A função storage.objectAdmin Identity and Access Management (IAM)
  • Uma função personalizada, incluindo as seguintes permissões:
    • storage.objects.create
    • storage.objects.list (para exportar arquivos apenas em paralelo)
    • storage.objects.delete (para exportar arquivos apenas em paralelo)

Para obter ajuda com funções do IAM, consulte Gerenciamento de Identidade e Acesso .

Exportar dados para vários arquivos em paralelo

Você pode exportar dados em paralelo de vários arquivos armazenados no Cloud SQL para o Cloud Storage. Para isso, use o utilitário pg_dump com a opção --jobs .

Se você planeja importar seus dados para o Cloud SQL, siga as instruções fornecidas em Exportar dados de um servidor de banco de dados externo para que seus arquivos sejam formatados corretamente para o Cloud SQL.

gcloud

Para exportar dados do Cloud SQL para vários arquivos em paralelo, conclua as seguintes etapas:

  1. Crie um bucket do Cloud Storage .
  2. Para encontrar a conta de serviço da instância do Cloud SQL da qual você está exportando arquivos, use o
    gcloud sql instances describe .
    gcloud sql instances describe INSTANCE_NAME
  3. Substitua INSTANCE_NAME pelo nome da sua instância do Cloud SQL.

    Na saída, procure o valor associado ao campo serviceAccountEmailAddress .

  4. Para conceder a função storage.objectAdmin do IAM à conta de serviço, use o comando gcloud storage buckets add-iam-policy-binding . Para obter ajuda na definição de permissões do IAM, consulte Usar permissões do IAM .
  5. Para exportar dados do Cloud SQL para vários arquivos em paralelo, use o comando gcloud sql export sql :
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \
    --offload \
    --parallel \
    --threads=THREAD_NUMBER \
    --database=DATABASE_NAME \
    --table=TABLE_EXPRESSION
    

    Faça as seguintes substituições:

    • INSTANCE_NAME : o nome da instância do Cloud SQL da qual você está exportando arquivos em paralelo.
    • BUCKET_NAME : o nome do bucket do Cloud Storage.
    • BUCKET_PATH : o caminho para o bucket onde os arquivos de exportação são armazenados.
    • FOLDER_NAME : a pasta onde os arquivos de exportação são armazenados.
    • THREAD_NUMBER : o número de threads que o Cloud SQL usa para exportar arquivos em paralelo. Por exemplo, se você quiser exportar três arquivos simultaneamente em paralelo, especifique 3 como o valor para este parâmetro.
    • DATABASE_NAME (opcional): o nome dos bancos de dados dentro da instância do Cloud SQL da qual a exportação é feita. Se você não especificar um banco de dados, o Cloud SQL exportará todos os bancos de dados de usuários da instância. Para obter mais informações, consulte Exportar uma instância inteira.
    • TABLE_EXPRESSION : as tabelas a serem exportadas do banco de dados especificado.

    O comando export sql não contém gatilhos ou procedimentos armazenados, mas contém visualizações. Para exportar gatilhos ou procedimentos armazenados, use uma única thread para a exportação. Esta thread usa a ferramenta pg_dump .

    Após a conclusão da exportação, você deverá ter arquivos em uma pasta no bucket do Cloud Storage no formato de diretório pg_dump .

  6. Se você não precisar da função do IAM definida em Funções e permissões necessárias para exportar do Cloud SQL para PostgreSQL , revogue -a.

REST v1

Para exportar dados do Cloud SQL para vários arquivos em paralelo, conclua as seguintes etapas:

  1. Crie um bucket do Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Faça as seguintes substituições:
    • BUCKET_NAME : o nome do bucket, sujeito aos requisitos de nomenclatura . Por exemplo, my-bucket .
    • PROJECT_NAME : o nome do Google Cloud projeto que contém o bucket do Cloud Storage que você está criando.
    • LOCATION_NAME : o local do bucket onde você deseja armazenar os arquivos que está exportando. Por exemplo, us-east1 .
  2. Forneça à sua instância a função do IAM " legacyBucketWriter " para o seu bucket. Para obter ajuda com a definição de permissões do IAM, consulte Usar permissões do IAM .
  3. Exporte dados do Cloud SQL para vários arquivos em paralelo:

    Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:

    • PROJECT_NAME : o nome do Google Cloud projeto que contém o bucket do Cloud Storage que você criou.
    • INSTANCE_NAME : o nome da instância do Cloud SQL da qual você está exportando arquivos em paralelo.
    • BUCKET_NAME : o nome do bucket do Cloud Storage.
    • BUCKET_PATH : o caminho para o bucket onde os arquivos de exportação são armazenados.
    • FOLDER_NAME : a pasta onde os arquivos de exportação são armazenados.
    • DATABASE_NAME : o nome do banco de dados dentro da instância do Cloud SQL da qual a exportação é feita. Se você quiser exportar todos os bancos de dados de usuários da instância, remova este campo do corpo da solicitação.
    • THREAD_NUMBER : o número de threads que o Cloud SQL usa para exportar arquivos em paralelo. Por exemplo, se você quiser exportar três arquivos simultaneamente em paralelo, especifique 3 como o valor para este parâmetro.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlExportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

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

    Você deve receber uma resposta JSON semelhante à seguinte:

  4. Após a conclusão da exportação, você deverá ter arquivos em uma pasta no bucket do Cloud Storage no formato de diretório pg_dump .

  5. Se você não precisar da função do IAM definida em Funções e permissões necessárias para exportar do Cloud SQL para PostgreSQL , revogue -a.
Para obter a lista completa de parâmetros para a solicitação, consulte a página da API de administração do Cloud SQL .

REST v1beta4

Para exportar dados do Cloud SQL para vários arquivos em paralelo, conclua as seguintes etapas:

  1. Crie um bucket do Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    Faça as seguintes substituições:
    • BUCKET_NAME : o nome do bucket, sujeito aos requisitos de nomenclatura . Por exemplo, my-bucket .
    • PROJECT_NAME : o nome do Google Cloud projeto que contém o bucket do Cloud Storage que você está criando.
    • LOCATION_NAME : o local do bucket onde você deseja armazenar os arquivos que está exportando. Por exemplo, us-east1 .
  2. Forneça à sua instância a função storage.objectAdmin do IAM para o seu bucket. Para obter ajuda com a definição de permissões do IAM, consulte Usar permissões do IAM .
  3. Exporte dados do Cloud SQL para vários arquivos em paralelo:

    Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:

    • PROJECT_NAME : o nome do Google Cloud projeto que contém o bucket do Cloud Storage que você criou.
    • INSTANCE_NAME : o nome da instância do Cloud SQL da qual você está exportando arquivos em paralelo.
    • BUCKET_NAME : o nome do bucket do Cloud Storage.
    • BUCKET_PATH : o caminho para o bucket onde os arquivos de exportação são armazenados.
    • FOLDER_NAME : a pasta onde os arquivos de exportação são armazenados.
    • DATABASE_NAME : o nome do banco de dados dentro da instância do Cloud SQL da qual a exportação é feita. Se você quiser exportar todos os bancos de dados de usuários da instância, remova este campo do corpo da solicitação.
    • THREAD_NUMBER : o número de threads que o Cloud SQL usa para exportar arquivos em paralelo. Por exemplo, se você quiser exportar três arquivos simultaneamente em paralelo, especifique 3 como o valor para este parâmetro.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlExportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

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

    Você deve receber uma resposta JSON semelhante à seguinte:

  4. Após a conclusão da exportação, você deverá ter arquivos em uma pasta no bucket do Cloud Storage no formato de diretório pg_dump .

  5. Se você não precisar da função do IAM definida em Funções e permissões necessárias para exportar do Cloud SQL para PostgreSQL , revogue -a.
Para obter a lista completa de parâmetros para a solicitação, consulte a página da API de administração do Cloud SQL .

Exportar e importar uma instância inteira

Você pode exportar ou importar todos os bancos de dados de usuários em uma instância inteira usando uma exportação paralela formatada em diretório.

Para exportar ou importar uma instância inteira, use os mesmos comandos mostrados nas seções de exportação paralela e importação paralela , removendo os campos databases ou database , respectivamente. Se você não especificar um banco de dados, o Cloud SQL executará uma exportação ou importação paralela para todos os bancos de dados de usuários na instância. Isso exclui os bancos de dados do sistema e os bancos de dados do Cloud SQL usados ​​para gerenciar operações internas.

Em uma exportação paralela formatada em diretório para o Cloud Storage, após a conclusão bem-sucedida da exportação, os dados associados a cada banco de dados são armazenados em um subdiretório nomeado para cada banco de dados, semelhante ao seguinte:

gs://example-bucket/test-folder/
    |---- postgres/
    |    |---- 3929.dat.gz (table data file)
    |    |---- toc.dat (metadata file)
    |
    |---- second_database/
    |    |---- 3930.dat.gz
    |    |---- 3931.dat.gz
    |    |---- toc.dat

Se você quiser executar uma importação paralela para uma instância inteira e os arquivos da instância foram criados fora do Cloud SQL, essa estrutura de subdiretório será necessária para que a operação seja concluída com sucesso.

Quando toda a estrutura de despejo da instância é detectada, o banco de dados de importação especificado na API é ignorado. A operação detecta toda a estrutura da instância a partir do nome do diretório.

Não é possível executar uma exportação ou importação de instância inteira para outros formatos de arquivo.

Não é possível exportar ou importar uma instância inteira como um único arquivo SQL ou CSV.

Importar dados de vários arquivos em paralelo para o Cloud SQL para PostgreSQL

As seções a seguir contêm informações sobre como importar dados de vários arquivos em paralelo para o Cloud SQL para PostgreSQL.

Funções e permissões necessárias para importar dados de vários arquivos em paralelo para o Cloud SQL para PostgreSQL

Para importar dados do Cloud Storage para o Cloud SQL, o usuário que inicia a importação deve ter uma das seguintes funções:

Além disso, a conta de serviço da instância do Cloud SQL deve ter uma das seguintes funções:

  • A função storage.objectAdmin do IAM
  • Uma função personalizada, incluindo as seguintes permissões:
    • storage.objects.get
    • storage.objects.list (para importar arquivos apenas em paralelo)

Para obter ajuda com funções do IAM, consulte Gerenciamento de Identidade e Acesso .

Importar dados para o Cloud SQL para PostgreSQL

Você pode importar dados em paralelo de vários arquivos armazenados no Cloud Storage para o seu banco de dados. Para isso, use o utilitário pg_restore com a opção --jobs .

gcloud

Para importar dados de vários arquivos em paralelo para o Cloud SQL, conclua as seguintes etapas:

  1. Crie um bucket do Cloud Storage .
  2. Carregue os arquivos para seu bucket.

    Para obter ajuda com o upload de arquivos para buckets, consulte Upload de objetos de arquivos .

  3. Para encontrar a conta de serviço da instância do Cloud SQL para a qual você está importando arquivos, use o
    gcloud sql instances describe .
    gcloud sql instances describe INSTANCE_NAME
  4. Substitua INSTANCE_NAME pelo nome da sua instância do Cloud SQL.

    Na saída, procure o valor associado ao campo serviceAccountEmailAddress .

  5. Para conceder a função storage.objectAdmin do IAM à conta de serviço, use o utilitário gcloud storage buckets add-iam-policy-binding . Para obter ajuda na definição de permissões do IAM, consulte Usar permissões do IAM .
  6. Para importar dados de vários arquivos em paralelo para o Cloud SQL, use o comando gcloud sql import sql :
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \
    --parallel \ 
    --threads=THREAD_NUMBER \
    --database=DATABASE_NAME
    

    Faça as seguintes substituições:

    • INSTANCE_NAME : o nome da instância do Cloud SQL para a qual você está importando arquivos em paralelo.
    • BUCKET_NAME : o nome do bucket do Cloud Storage.
    • BUCKET_PATH : o caminho para o bucket onde os arquivos de importação são armazenados.
    • FOLDER_NAME : a pasta onde os arquivos de importação são armazenados.
    • THREAD_NUMBER : o número de threads que o Cloud SQL usa para importar arquivos em paralelo. Por exemplo, se você quiser importar três arquivos simultaneamente em paralelo, especifique 3 como o valor para este parâmetro.
    • DATABASE_NAME : o nome do banco de dados dentro da instância do Cloud SQL da qual a importação é feita. É necessário especificar apenas um banco de dados.

    Se o comando retornar um erro como ERROR_RDBMS , revise as permissões; esse erro geralmente ocorre devido a problemas de permissões.

  7. Se você não precisar das permissões do IAM definidas em Funções e permissões necessárias para importar para o Cloud SQL para PostgreSQL , use gcloud storage buckets remove-iam-policy-binding para removê-las.

REST v1

Para importar dados de vários arquivos em paralelo para o Cloud SQL, conclua as seguintes etapas:

  1. Crie um bucket do Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Faça as seguintes substituições:
    • BUCKET_NAME : o nome do bucket, sujeito aos requisitos de nomenclatura . Por exemplo, my-bucket .
    • PROJECT_NAME : o nome do Google Cloud projeto que contém o bucket do Cloud Storage que você está criando.
    • LOCATION_NAME : o local do bucket onde você deseja armazenar os arquivos que está importando. Por exemplo, us-east1 .
  2. Carregue os arquivos para seu bucket.

    Para obter ajuda com o upload de arquivos para buckets, consulte Upload de objetos de arquivos .

  3. Forneça à sua instância a função storage.objectAdmin do IAM para o seu bucket. Para obter ajuda com a definição de permissões do IAM, consulte Usar permissões do IAM .
  4. Importe dados de vários arquivos em paralelo para o Cloud SQL:

    Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:

    • PROJECT_NAME : o nome do Google Cloud projeto que contém o bucket do Cloud Storage que você criou.
    • INSTANCE_NAME : o nome da instância do Cloud SQL para a qual você está importando arquivos em paralelo.
    • BUCKET_NAME : o nome do bucket do Cloud Storage.
    • BUCKET_PATH : o caminho para o bucket onde os arquivos de importação são armazenados.
    • FOLDER_NAME : a pasta onde os arquivos de importação são armazenados.
    • DATABASE_NAME : o nome do banco de dados dentro da instância do Cloud SQL da qual a importação é feita. É necessário especificar apenas um banco de dados.
    • THREAD_NUMBER : o número de threads que o Cloud SQL usa para importar arquivos em paralelo. Por exemplo, se você quiser importar três arquivos simultaneamente em paralelo, especifique 3 como o valor para este parâmetro.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

    Corpo JSON da solicitação:

    
    {
      "importContext":
        {
           "fileType": "SQL",
           "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
           "databases": ["DATABASE_NAME"],
           "offload": [TRUE|FALSE],
           "sqlImportOptions": {
             "parallel": [TRUE|FALSE],
             "clean": [TRUE|FALSE],
             "ifExists": [TRUE|FALSE],
             "threads": [THREAD_NUMBER]
            }
        }
     }
    

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

    Você deve receber uma resposta JSON semelhante à seguinte:

    Para usar um usuário diferente para a importação, especifique a propriedade importContext.importUser .

    Para obter a lista completa de parâmetros para a solicitação, consulte a página da API de administração do Cloud SQL .
  5. Se você não precisar das permissões do IAM definidas em Funções e permissões necessárias para importar para o Cloud SQL para PostgreSQL , use gcloud storage buckets remove-iam-policy-binding para removê-las.

REST v1beta4

Para importar dados de vários arquivos em paralelo para o Cloud SQL, conclua as seguintes etapas:

  1. Crie um bucket do Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Faça as seguintes substituições:
    • BUCKET_NAME : o nome do bucket, sujeito aos requisitos de nomenclatura . Por exemplo, my-bucket .
    • PROJECT_NAME : o nome do Google Cloud projeto que contém o bucket do Cloud Storage que você está criando.
    • LOCATION_NAME : o local do bucket onde você deseja armazenar os arquivos que está importando. Por exemplo, us-east1 .
  2. Carregue os arquivos para seu bucket.

    Para obter ajuda com o upload de arquivos para buckets, consulte Upload de objetos de arquivos .

  3. Forneça à sua instância a função storage.objectAdmin do IAM para o seu bucket. Para obter ajuda com a definição de permissões do IAM, consulte Usar permissões do IAM .
  4. Importe dados de vários arquivos em paralelo para o Cloud SQL:

    Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:

    • PROJECT_NAME : o nome do Google Cloud projeto que contém o bucket do Cloud Storage que você criou.
    • INSTANCE_NAME : o nome da instância do Cloud SQL da qual você está importando arquivos em paralelo.
    • BUCKET_NAME : o nome do bucket do Cloud Storage.
    • BUCKET_PATH : o caminho para o bucket onde os arquivos de importação são armazenados.
    • FOLDER_NAME : a pasta onde os arquivos de importação são armazenados.
    • DATABASE_NAME : o nome do banco de dados dentro da instância do Cloud SQL da qual a importação é feita. É necessário especificar apenas um banco de dados.
    • THREAD_NUMBER : o número de threads que o Cloud SQL usa para importar arquivos em paralelo. Por exemplo, se você quiser importar três arquivos simultaneamente em paralelo, especifique 3 como o valor para este parâmetro.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

    Corpo JSON da solicitação:

    
     {
       "importContext":
         {
            "fileType": "SQL",
            "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
            "databases": ["DATABASE_NAME"],
            "offload": [TRUE|FALSE],
            "sqlImportOptions": {
              "parallel": [TRUE|FALSE],
              "clean": [TRUE|FALSE],
              "ifExists": [TRUE|FALSE],
              "threads": [THREAD_NUMBER]
             }
         }
      }
    

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

    Você deve receber uma resposta JSON semelhante à seguinte:

    Para usar um usuário diferente para a importação, especifique a propriedade importContext.importUser .

    Para obter a lista completa de parâmetros para a solicitação, consulte a página da API de administração do Cloud SQL .
  5. Se você não precisar das permissões do IAM definidas em Funções e permissões necessárias para importar para o Cloud SQL para PostgreSQL , use gcloud storage buckets remove-iam-policy-binding para removê-las.

Limitações

  • Se você especificar muitos threads ao importar ou exportar dados de vários arquivos em paralelo, poderá usar mais memória do que a sua instância do Cloud SQL tem. Se isso ocorrer, uma mensagem de erro interna será exibida. Verifique o uso de memória da sua instância e aumente o tamanho dela, conforme necessário. Para obter mais informações, consulte Sobre as configurações da instância .

  • Ao executar uma exportação, vírgulas em nomes de bancos de dados ou nomes de tabelas nos campos databases ou tables não são suportadas.

  • Certifique-se de ter espaço em disco suficiente para o download do arquivo de despejo inicial. Caso contrário, aparecerá um erro no space left on disk .

  • Se a sua instância tiver apenas uma CPU virtual (vCPU), você não poderá importar ou exportar vários arquivos em paralelo. O número de vCPUs da sua instância não pode ser menor que o número de threads que você está usando para a operação de importação ou exportação, e o número de threads deve ser de pelo menos dois.

  • O utilitário pg_dump não consegue dividir em partes nenhuma tabela exportada. Portanto, se você tiver uma tabela muito grande, ela pode se tornar um gargalo para a velocidade da operação de exportação.

O que vem a seguir