Exporte e importe ficheiros em paralelo

Esta página descreve a exportação e a importação de ficheiros 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 a sua base de dados tem espaço livre adequado.
  • As operações de exportação e importação usam recursos da base de dados, mas não interferem com as operações típicas da base de dados, a menos que a instância esteja subaprovisionada.

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

Exporte dados do Cloud SQL para MySQL para vários ficheiros em paralelo

As secções seguintes contêm informações sobre a exportação de dados do Cloud SQL para MySQL para vários ficheiros em paralelo.

Funções e autorizações necessárias para exportar dados do Cloud SQL para MySQL para vários ficheiros em paralelo

Para exportar dados do Cloud SQL para o Cloud Storage, o utilizador que inicia a exportação tem de ter uma das seguintes funções:

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

  • A storage.objectAdminfunção de gestão de identidade e de acesso (IAM)
  • Uma função personalizada, incluindo as seguintes autorizações:
    • storage.objects.create
    • storage.objects.list (apenas para exportar ficheiros em paralelo)
    • storage.objects.delete (apenas para exportar ficheiros em paralelo)

Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.

Exporte dados para vários ficheiros em paralelo

Pode exportar dados em paralelo de vários ficheiros residentes no Cloud SQL para o Cloud Storage. Para o fazer, use o utilitário dumpInstance.

Depois de os ficheiros estarem no Cloud Storage, pode importá-los para outra base de dados do Cloud SQL. Se quiser aceder aos dados nos ficheiros localmente, transfira os dados do Cloud Storage para o seu ambiente local.

Se os seus ficheiros contiverem cláusulas DEFINER (vistas, acionadores, stored_procedures, etc.), a utilização destes ficheiros para importação pode falhar, consoante a ordem em que estas declarações são executadas. Saiba mais sobre a utilização de DEFINER e possíveis soluções alternativas no Cloud SQL.

gcloud

Para exportar dados do Cloud SQL para vários ficheiros em paralelo, conclua os seguintes passos:

  1. Crie um contentor do Cloud Storage.
  2. Para encontrar a conta de serviço da instância do Cloud SQL a partir da qual está a exportar ficheiros, use o comando
    gcloud sql instances describe.
    gcloud sql instances describe INSTANCE_NAME
  3. Substitua INSTANCE_NAME pelo nome da sua instância do Cloud SQL.

    No resultado, procure o valor associado ao campo serviceAccountEmailAddress.

  4. Para conceder a storage.objectAdmin função IAM à conta de serviço, use o comando gcloud storage buckets add-iam-policy-binding. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Use autorizações de IAM.
  5. Para exportar dados do Cloud SQL para vários ficheiros 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 a partir da qual está a exportar ficheiros em paralelo.
    • BUCKET_NAME: o nome do contentor do Cloud Storage.
    • BUCKET_PATH: o caminho para o contentor onde os ficheiros de exportação estão armazenados.
    • FOLDER_NAME: a pasta onde os ficheiros de exportação estão armazenados.
    • THREAD_NUMBER: o número de threads que o Cloud SQL usa para exportar ficheiros em paralelo. Por exemplo, se quiser exportar três ficheiros em simultâneo, especifique 3 como o valor deste parâmetro.
    • DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a exportação é feita. Se não especificar nenhuma base de dados, o Cloud SQL exporta todas as bases de dados da instância.
    • TABLE_EXPRESSION: as tabelas a exportar da base de dados especificada.

    O comando export sql não contém acionadores nem procedimentos armazenados, mas contém vistas. Para exportar acionadores ou procedimentos armazenados, use uma única thread para a exportação. Este thread usa a ferramenta mysqldump.

    Após a conclusão da exportação, deve ter ficheiros numa pasta no contentor do Cloud Storage no formato de despejo do MySQL Shell.

  6. Se não precisar da função do IAM que definiu em Funções e autorizações necessárias para exportar do Cloud SQL para MySQL, revogue-a.

REST v1

Para exportar dados do Cloud SQL para vários ficheiros em paralelo, conclua os seguintes passos:

  1. Crie um contentor 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 contentor, sujeito aos requisitos de nomenclatura. Por exemplo, my-bucket.
    • PROJECT_NAME: o nome do Google Cloud projeto que contém o contentor do Cloud Storage que está a criar.
    • LOCATION_NAME: a localização do contentor onde quer armazenar os ficheiros que está a exportar. Por exemplo, us-east1.
  2. Disponibilize à sua instância a legacyBucketWriter função de IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Use IAM permissions.
  3. Exporte dados do Cloud SQL para vários ficheiros em paralelo:

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

    • PROJECT_NAME: o nome do projeto que contém o contentor do Cloud Storage que criou. Google Cloud
    • INSTANCE_NAME: o nome da instância do Cloud SQL a partir da qual está a exportar ficheiros em paralelo.
    • BUCKET_NAME: o nome do contentor do Cloud Storage.
    • BUCKET_PATH: o caminho para o contentor onde os ficheiros de exportação estão armazenados.
    • FOLDER_NAME: a pasta onde os ficheiros de exportação estão armazenados.
    • DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a exportação é feita. Se não especificar nenhuma base de dados, o Cloud SQL exporta todas as bases de dados da instância.
    • THREAD_NUMBER: o número de threads que o Cloud SQL usa para exportar ficheiros em paralelo. Por exemplo, se quiser exportar três ficheiros em simultâneo, especifique 3 como o valor deste parâmetro.

    Método HTTP e URL:

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

    Corpo JSON do pedido:

    {
     "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 o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

  4. Após a conclusão da exportação, deve ter ficheiros numa pasta no contentor do Cloud Storage no formato de despejo do MySQL Shell.

  5. Se não precisar da função do IAM que definiu em Funções e autorizações necessárias para exportar do Cloud SQL para MySQL, revogue-a.
Para ver a lista completa de parâmetros do pedido, consulte a página da API Admin do Cloud SQL.

REST v1beta4

Para exportar dados do Cloud SQL para vários ficheiros em paralelo, conclua os seguintes passos:

  1. Crie um contentor 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 contentor, sujeito aos requisitos de nomenclatura. Por exemplo, my-bucket.
    • PROJECT_NAME: o nome do Google Cloud projeto que contém o contentor do Cloud Storage que está a criar.
    • LOCATION_NAME: a localização do contentor onde quer armazenar os ficheiros que está a exportar. Por exemplo, us-east1.
  2. Disponibilize à sua instância a storage.objectAdmin função de IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Use IAM permissions.
  3. Exporte dados do Cloud SQL para vários ficheiros em paralelo:

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

    • PROJECT_NAME: o nome do projeto que contém o contentor do Cloud Storage que criou. Google Cloud
    • INSTANCE_NAME: o nome da instância do Cloud SQL a partir da qual está a exportar ficheiros em paralelo.
    • BUCKET_NAME: o nome do contentor do Cloud Storage.
    • BUCKET_PATH: o caminho para o contentor onde os ficheiros de exportação estão armazenados.
    • FOLDER_NAME: a pasta onde os ficheiros de exportação estão armazenados.
    • DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a exportação é feita. Se não especificar nenhuma base de dados, o Cloud SQL exporta todas as bases de dados da instância.
    • THREAD_NUMBER: o número de threads que o Cloud SQL usa para exportar ficheiros em paralelo. Por exemplo, se quiser exportar três ficheiros em simultâneo, especifique 3 como o valor deste parâmetro.

    Método HTTP e URL:

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

    Corpo JSON do pedido:

    {
     "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 o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

  4. Após a conclusão da exportação, deve ter ficheiros numa pasta no contentor do Cloud Storage no formato de despejo do MySQL Shell.

  5. Se não precisar da função do IAM que definiu em Funções e autorizações necessárias para exportar do Cloud SQL para MySQL, revogue-a.
Para ver a lista completa de parâmetros do pedido, consulte a página da API Admin do Cloud SQL.

Importe dados de vários ficheiros em paralelo para o Cloud SQL para MySQL

As secções seguintes contêm informações sobre a importação de dados de vários ficheiros em paralelo para o Cloud SQL para MySQL.

Funções e autorizações necessárias para importar dados de vários ficheiros em paralelo para o Cloud SQL para MySQL

Para importar dados do Cloud Storage para o Cloud SQL, o utilizador que inicia a importação tem de ter uma das seguintes funções:

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

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

Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.

Importe dados para o Cloud SQL para MySQL

Pode importar dados em paralelo de vários ficheiros residentes no Cloud Storage para a sua base de dados. Para o fazer, use o utilitário loadDump.

gcloud

Para importar dados de vários ficheiros em paralelo para o Cloud SQL, conclua os seguintes passos:

  1. Crie um contentor do Cloud Storage.
  2. Carregue os ficheiros para o seu contentor.

    Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregue objetos a partir de ficheiros.

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

    No resultado, procure o valor associado ao campo serviceAccountEmailAddress.

  5. Para conceder a storage.objectAdmin função IAM à conta de serviço, use o utilitário gcloud storage buckets add-iam-policy-binding. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Use autorizações de IAM.
  6. Para importar dados de vários ficheiros 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 está a importar ficheiros em paralelo.
    • BUCKET_NAME: o nome do contentor do Cloud Storage.
    • BUCKET_PATH: o caminho para o contentor onde os ficheiros de importação estão armazenados.
    • FOLDER_NAME: a pasta onde os ficheiros de importação estão armazenados.
    • THREAD_NUMBER: o número de threads que o Cloud SQL usa para importar ficheiros em paralelo. Por exemplo, se quiser importar três ficheiros em simultâneo, especifique 3 como o valor deste parâmetro.
    • DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a importação é feita. Se não especificar bases de dados, o Cloud SQL importa todas as bases de dados para a instância.

    Se o comando devolver um erro como ERROR_RDBMS, reveja as autorizações. Este erro deve-se frequentemente a problemas de autorizações.

  7. Se não precisar das autorizações de IAM que definiu em Funções e autorizações necessárias para a importação para o Cloud SQL para MySQL, use gcloud storage buckets remove-iam-policy-binding para as remover.

REST v1

Para importar dados de vários ficheiros em paralelo para o Cloud SQL, conclua os seguintes passos:

  1. Crie um contentor 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 contentor, sujeito aos requisitos de nomenclatura. Por exemplo, my-bucket.
    • PROJECT_NAME: o nome do Google Cloud projeto que contém o contentor do Cloud Storage que está a criar.
    • LOCATION_NAME: a localização do contentor onde quer armazenar os ficheiros que está a importar. Por exemplo, us-east1.
  2. Carregue os ficheiros para o seu contentor.

    Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregue objetos a partir de ficheiros.

  3. Faculte à sua instância a storage.objectAdmin função do IAM para o seu contentor. Para obter ajuda na definição de autorizações de IAM, consulte o artigo Use autorizações de IAM.
  4. Importe dados de vários ficheiros em paralelo para o Cloud SQL:

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

    • PROJECT_NAME: o nome do projeto que contém o contentor do Cloud Storage que criou. Google Cloud
    • INSTANCE_NAME: o nome da instância do Cloud SQL para a qual está a importar ficheiros em paralelo.
    • BUCKET_NAME: o nome do contentor do Cloud Storage.
    • BUCKET_PATH: o caminho para o contentor onde os ficheiros de importação estão armazenados.
    • FOLDER_NAME: a pasta onde os ficheiros de importação estão armazenados.
    • DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a importação é feita. Se não especificar bases de dados, o Cloud SQL importa todas as bases de dados para a instância.
    • THREAD_NUMBER: o número de threads que o Cloud SQL usa para importar ficheiros em paralelo. Por exemplo, se quiser importar três ficheiros em simultâneo, especifique 3 como o valor deste parâmetro.

    Método HTTP e URL:

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

    Corpo JSON do pedido:

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

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

    Para ver a lista completa de parâmetros do pedido, consulte a página da API Admin do Cloud SQL.
  5. Se não precisar das autorizações de IAM que definiu em Funções e autorizações necessárias para a importação para o Cloud SQL para MySQL, use gcloud storage buckets remove-iam-policy-binding para as remover.

REST v1beta4

Para importar dados de vários ficheiros em paralelo para o Cloud SQL, conclua os seguintes passos:

  1. Crie um contentor 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 contentor, sujeito aos requisitos de nomenclatura. Por exemplo, my-bucket.
    • PROJECT_NAME: o nome do Google Cloud projeto que contém o contentor do Cloud Storage que está a criar.
    • LOCATION_NAME: a localização do contentor onde quer armazenar os ficheiros que está a importar. Por exemplo, us-east1.
  2. Carregue os ficheiros para o seu contentor.

    Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregue objetos a partir de ficheiros.

  3. Faculte à sua instância a storage.objectAdmin função do IAM para o seu contentor. Para obter ajuda na definição de autorizações de IAM, consulte o artigo Use autorizações de IAM.
  4. Importe dados de vários ficheiros em paralelo para o Cloud SQL:

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

    • PROJECT_NAME: o nome do projeto que contém o contentor do Cloud Storage que criou. Google Cloud
    • INSTANCE_NAME: o nome da instância do Cloud SQL a partir da qual está a importar ficheiros em paralelo.
    • BUCKET_NAME: o nome do contentor do Cloud Storage.
    • BUCKET_PATH: o caminho para o contentor onde os ficheiros de importação estão armazenados.
    • FOLDER_NAME: a pasta onde os ficheiros de importação estão armazenados.
    • DATABASE_NAME (opcional): o nome das bases de dados na instância do Cloud SQL a partir da qual a importação é feita. Se não especificar bases de dados, o Cloud SQL importa todas as bases de dados para a instância.
    • THREAD_NUMBER: o número de threads que o Cloud SQL usa para importar ficheiros em paralelo. Por exemplo, se quiser importar três ficheiros em simultâneo, especifique 3 como o valor deste parâmetro.

    Método HTTP e URL:

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

    Corpo JSON do pedido:

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

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

    Para ver a lista completa de parâmetros do pedido, consulte a página da API Admin do Cloud SQL.
  5. Se não precisar das autorizações de IAM que definiu em Funções e autorizações necessárias para a importação para o Cloud SQL para MySQL, use gcloud storage buckets remove-iam-policy-binding para as remover.

Limitações

  • Se especificar demasiados processos quando importa ou exporta dados de vários ficheiros em paralelo, pode usar mais memória do que a sua instância do Cloud SQL tem. Se isto ocorrer, é apresentada uma mensagem de erro interno. Verifique a utilização de memória da sua instância e aumente o tamanho da instância, conforme necessário. Para mais informações, consulte o artigo Acerca das definições de instância.

  • Quando faz uma exportação, as vírgulas nos nomes das bases de dados ou nos nomes das tabelas nos campos databases ou tables não são suportadas.

  • Certifique-se de que tem espaço no disco suficiente para a transferência inicial do ficheiro de despejo. Caso contrário, é apresentado um erro no space left on disk.

  • Se a sua instância tiver apenas uma CPU virtual (vCPU), não pode importar nem exportar vários ficheiros em paralelo. O número de vCPUs da sua instância não pode ser inferior ao número de threads que está a usar para a operação de importação ou exportação, e o número de threads tem de ser, pelo menos, dois.

  • As importações e exportações com várias linhas de execução (paralelas) não são compatíveis com importações e exportações com uma única linha de execução. Por exemplo, os ficheiros de despejo gerados por uma exportação de thread único só podem ser importados por importações de thread único. Da mesma forma, os ficheiros de despejo gerados por exportações paralelas só podem ser importados por importações paralelas.

  • Se escrever declarações de linguagem de definição de dados (LDD), como CREATE, DROP ou ALTER, durante uma operação de exportação, a operação pode falhar ou os dados exportados podem ser inconsistentes com a cópia instantânea de recuperação num determinado momento.

  • Se uma operação de importação falhar, pode ter dados parcialmente importados restantes. O MySQL confirma automaticamente as declarações DDL. Se isto ocorrer, antes de importar novamente os dados, limpe as declarações DDL e os dados.

  • Tal como numa operação de importação paralela de base de dados única, antes de executar uma operação de importação paralela para uma instância inteira, certifique-se de que todas as bases de dados terminaram a criação antes de começar.

O que se segue?