Exportar e importar usando arquivos de despejo SQL

Nesta página, descrevemos como exportar e importar dados para instâncias do Cloud SQL usando arquivos dump SQL.

Antes de começar

As exportações usam recursos do banco de dados, mas não interferem nas operações normais do banco de dados, a menos que a instância tenha um provisionamento menor do que deveria ser.

Para ver as práticas recomendadas, consulte Práticas recomendadas para importação e exportação de dados.

Depois de concluir uma operação de importação, verifique os resultados.

Exportar dados do Cloud SQL para MySQL

Permissões e papéis necessários para exportar do Cloud SQL para MySQL

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

Além disso, a conta de serviço da instância do Cloud SQL precisa ter um dos seguintes papéis:

  • O papel storage.objectAdmin do Identity and Access Management (IAM)
  • Um papel personalizado, incluindo as seguintes permissões:
    • storage.objects.create
    • storage.objects.list (somente para exportar arquivos em paralelo)
    • storage.objects.delete (somente para exportar arquivos em paralelo)

Para receber ajuda com os papéis do IAM, consulte Gerenciamento de identidade e acesso.

Exportar para um arquivo dump SQL do Cloud SQL para MySQL

Para criar um arquivo dump SQL, exporte dados do Cloud SQL para o Cloud Storage. Depois que o arquivo estiver no Cloud Storage, será possível importá-lo para outro banco de dados do Cloud SQL. Também é possível fazer o download de dados do Cloud Storage para o ambiente local caso queira acessá-los localmente.

A exportação do Cloud SQL usa o utilitário mysqldump com as opções --single-transaction e --hex-blob. Com a opção --single-transaction, mysqldump inicia uma transação antes de ser executada. Em vez de bloquear todo o banco de dados, isso permite que mysqldump leia o banco de dados no estado atual, criando um despejo de dados consistente.

Se o arquivo dump SQL contiver cláusulas DEFINER (visualizações, acionadores, procedimentos armazenados, entre outros), dependendo da ordem em que essas instruções são executadas, o uso deste arquivo para importação poderá falhar. para criar um anexo da VLAN de monitoramento. Saiba mais sobre o uso de "DEFINER" e as possíveis soluções alternativas no Cloud SQL.

Para exportar dados de um banco de dados em uma instância do Cloud SQL para um arquivo dump SQL em um bucket do Cloud Storage:

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Clique em Exportar.
  4. Na seção Formato de arquivo, clique em SQL para criar um arquivo dump SQL.
  5. Na seção Dados a serem exportados, clique em Um ou mais bancos de dados nesta instância para exportar bancos de dados específicos.
  6. Use o menu suspenso para selecionar os bancos de dados que você quer exportar.
  7. Na seção Destino, selecione Procurar para pesquisar um bucket ou uma pasta do Cloud Storage para a exportação.
  8. Clique em Exportar para iniciar a exportação.

gcloud

  1. Crie um bucket do Cloud Storage.
  2. Encontre a conta de serviço da instância do Cloud SQL da qual você está exportando. É possível fazer isso executando o comando gcloud sql instances describe. Procure o campo serviceAccountEmailAddress na saída.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Use gsutil iam para conceder o papel do IAM storage.objectAdmin à conta de serviço. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  4. Exporte o banco de dados para o bucket do Cloud Storage:
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \
    --database=DATABASE_NAME \
    --offload
      

    O comando export sql não contém gatilhos ou procedimentos armazenados, mas tem visualizações. Para exportar gatilhos e/ou procedimentos armazenados, use a ferramenta mysqldump.

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

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

REST v1

  1. Crie um bucket para a exportação:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Forneça à instância o papel do IAM legacyBucketWriter no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  3. Exporte o banco de dados:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do bucket do Cloud Storage
    • path_to_dump_file: o caminho para o arquivo dump SQL
    • database_name_1: o nome de um banco de dados dentro da instância do Cloud SQL
    • database_name_2: o nome de um banco de dados dentro da instância do Cloud SQL
    • offload: ativa a exportação sem servidor. Defina como true para usar a exportação sem servidor.

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"],
          "offload": true | false
        }
    }
    

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

    Você receberá uma resposta JSON semelhante a esta:

  4. Se você não precisa manter o papel do IAM definido anteriormente, remova-o agora.
Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:export

REST v1beta4

  1. Crie um bucket para a exportação:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Essa etapa não é obrigatória, mas altamente recomendada para que você não abra acesso a outros dados.

  2. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  3. Exporte o banco de dados:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do bucket do Cloud Storage
    • path_to_dump_file: o caminho para o arquivo dump SQL
    • database_name_1: o nome de um banco de dados dentro da instância do Cloud SQL
    • database_name_2: o nome de um banco de dados dentro da instância do Cloud SQL
    • offload: ativa a exportação sem servidor. Defina como true para usar a exportação sem servidor.

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"],
          "offload": true | false
        }
    }
    

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

    Você receberá uma resposta JSON semelhante a esta:

  4. Se você não precisar manter o papel do IAM definido anteriormente, revogue-o agora.
Para ver a lista completa de parâmetros da solicitação, consulte a página instances:export

Exportar do servidor MySQL local usando mysqldump

Se você estiver exportando dados de um banco de dados MySQL local para importar para um banco de dados do Cloud SQL, use o utilitário mysqldump com as seguintes sinalizações:

  • --databases Use a opção --databases para especificar uma lista explícita de bancos de dados a serem exportados. Essa lista não pode conter o banco de dados do sistema mysql.
  • --hex-blob Se o banco de dados tiver campos binários, use essa sinalização para garantir que eles sejam importados corretamente.
  • --set-gtid-purged=OFF Não inclua as informações de GTID no arquivo dump SQL. A geração de registros binários não pode ser desativada pelo arquivo. Não é necessário para o MySQL 5.5 nem para a replicação externa.
  • --single-transaction Inicia uma transação antes de executar. Em vez de bloquear todo o banco de dados, isso permite que o mysqldump leia o banco de dados no estado atual, criando um despejo de dados consistente.

Na linha de comando, execute mysqldump:

mysqldump --databases DATABASE_NAME -h INSTANCE_IP -u USERNAME -p \
--hex-blob --single-transaction --set-gtid-purged=OFF \
--default-character-set=utf8mb4 > SQL_FILE.sql

Para receber ajuda com mysqldump, consulte a referência do mysqldump.

Replicação externa para o Cloud SQL para MySQL

Para criar um arquivo dump para uso em uma configuração de servidor externo, consulte Como replicar de um servidor externo.

Importar dados para o Cloud SQL para MySQL

Permissões e papéis necessários para importar para o Cloud SQL para MySQL

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

Além disso, a conta de serviço da instância do Cloud SQL precisa ter um dos seguintes papéis:

  • O papel storage.objectAdmin do IAM
  • Um papel personalizado, incluindo as seguintes permissões:
    • storage.objects.get
    • storage.objects.list (somente para importar arquivos em paralelo)

Para receber ajuda com os papéis do IAM, consulte Gerenciamento de identidade e acesso.

Importar um arquivo dump SQL para o Cloud SQL para MySQL

Os arquivos SQL são arquivos de texto simples com uma sequência de comandos SQL.

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Clique em Importar.
  4. Na seção Escolher o arquivo do qual você quer importar dados, insira o caminho para o bucket e o arquivo dump SQL para importar ou navegue até um arquivo existente de dados.

    É possível importar um arquivo compactado (.gz) ou descompactado (.sql).

  5. Em Formato, selecione SQL.
  6. Selecione o banco de dados que receberá os dados importados.

    Isso faz com que o Cloud SQL execute a instrução USE DATABASE antes da importação.

  7. Se você quiser especificar um usuário do PostgreSQL para realizar a importação, selecione-o.

    Se o arquivo de importação contiver instruções que precisem ser realizadas por um usuário específico, use este campo para especificar esse usuário.

  8. Clique em Importar para iniciar a importação.

gcloud

  1. Criar um bucket do Cloud Storage
  2. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  3. Descreva a instância para a qual está fazendo a importação:
    gcloud sql instances describe INSTANCE_NAME
    
  4. Copie o campo serviceAccountEmailAddress.
  5. Use gsutil iam para conceder o papel do IAM storage.objectAdminà conta de serviço do bucket.
    gsutil iam ch serviceAccount:SERVICE-ACCOUNT:objectAdmin \
    gs://BUCKET_NAME
      
    Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  6. Importe o banco de dados:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME
    

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

    Se o comando retornar um erro como ERROR_RDBMS, revise as permissões. Esse erro costuma ser causado por problemas de permissões.

  7. Se não for necessário manter as permissões do IAM definidas anteriormente, remova-as usando gsutil iam.

REST v1

  1. Crie um arquivo dump SQL. As instruções vinculadas definem determinadas sinalizações que tornam o arquivo dump compatível com o Cloud SQL.

  2. Criar um bucket do Cloud Storage
  3. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  4. Forneça à instância os papéis do IAM legacyBucketWriter e objectViewer do seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  5. Importe seu arquivo dump:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do bucket do Cloud Storage
    • path_to_sql_file: o caminho para o arquivo SQL
    • database_name: o nome de um banco de dados dentro da instância do Cloud SQL

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

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

    Você receberá uma resposta JSON semelhante a esta:

    Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:import.
  6. Se você não precisa manter as permissões do IAM definidas anteriormente, remova-as agora.

REST v1beta4

  1. Crie um arquivo dump SQL. As instruções vinculadas definem determinadas sinalizações que tornam o arquivo dump compatível com o Cloud SQL.

  2. Criar um bucket do Cloud Storage
  3. Faça upload do arquivo no seu bucket.

    Para receber ajuda com o upload de arquivos para buckets, consulte Como fazer upload de objetos.

  4. Forneça à instância o papel do IAM storage.objectAdmin no seu bucket. Para ajuda com a configuração de permissões do IAM, consulte Como usar as permissões do Cloud IAM.
  5. Importe seu arquivo dump:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do bucket do Cloud Storage
    • path_to_sql_file: o caminho para o arquivo SQL
    • database_name: o nome de um banco de dados dentro da instância do Cloud SQL

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

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

    Você receberá uma resposta JSON semelhante a esta:

    Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:import.
  6. Se você não precisa manter as permissões do IAM definidas anteriormente, remova-as agora.

A seguir