Exportar e importar usando arquivos de despejo SQL,Exportar e importar usando arquivos de despejo SQL,Exportar e importar usando arquivos de despejo SQL,Exportar e importar usando arquivos de despejo SQL

Esta página descreve como exportar e importar dados para instâncias do Cloud SQL usando arquivos de despejo 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 esteja subprovisionada.

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

Após concluir uma operação de importação, verifique os resultados.

Exportar dados do Cloud SQL para MySQL

Funções e permissões necessárias 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 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 para um arquivo de despejo SQL do Cloud SQL para MySQL

Para criar um arquivo de despejo SQL, exporte os dados do Cloud SQL para o Cloud Storage. Depois que o arquivo estiver no Cloud Storage, você poderá importá-lo para outro banco de dados Cloud SQL. Você também pode baixar os dados do Cloud Storage para o seu ambiente local, se desejar acessá-los localmente.

A exportação do Cloud SQL utiliza 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 executado. Em vez de bloquear o banco de dados inteiro, isso permite que mysqldump leia o banco de dados no estado atual, resultando em um despejo de dados consistente.

Se o seu arquivo de despejo SQL contiver cláusulas DEFINER (visualizações, gatilhos, stored_procedures e assim por diante), dependendo da ordem em que essas instruções são executadas, o uso deste arquivo para importação poderá falhar. Saiba mais sobre o uso de DEFINER e 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 de despejo SQL em um bucket do Cloud Storage:

Console

  1. No Google Cloud console, 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 de despejo 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 dos quais você deseja exportar.
  7. Na seção Destino , selecione Procurar para procurar um bucket ou pasta do Cloud Storage para sua 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. Você pode fazer isso executando o comando gcloud sql instances describe . Procure o campo serviceAccountEmailAddress na saída.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Use gcloud storage buckets add-iam-policy-binding para conceder a função storage.objectAdmin do IAM à conta de serviço. Para obter ajuda na definição de permissões do IAM, consulte Usando permissões do IAM .
  4. Exporte o banco de dados para seu 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 contém visualizações. Para exportar gatilhos e/ou procedimentos armazenados, use a ferramenta mysqldump .

    Para obter 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 a função do IAM definida anteriormente, revogue -a agora.

REST v1

  1. Crie um bucket para a exportação:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME

    Esta etapa não é obrigatória, mas é altamente recomendada, para que você não abra acesso a nenhum outro dado.

  2. Forneça à sua instância a função legacyBucketWriter do IAM para o seu bucket. Para obter ajuda com a definição de permissões do IAM, consulte Usando permissões do IAM .
  3. Exporte seu banco de dados:

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

    • 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 de despejo 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
  4. 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 sua solicitação, expanda uma destas opções:

    Você deve receber uma resposta JSON semelhante à seguinte:

  5. Se você não precisar manter a função do IAM definida anteriormente, remova-a agora.
Para obter a lista completa de parâmetros para a solicitação, consulte a página instances:export .

REST v1beta4

  1. Crie um bucket para a exportação:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    

    Esta etapa não é obrigatória, mas é altamente recomendada, para que você não abra acesso a nenhum outro dado.

  2. Forneça à sua instância a função storage.objectAdmin do IAM para o seu bucket. Para obter ajuda na definição de permissões do IAM, consulte "Usando permissões do IAM" .
  3. Exporte seu banco de dados:

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

    • 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 de despejo 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
  4. 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 sua solicitação, expanda uma destas opções:

    Você deve receber uma resposta JSON semelhante à seguinte:

  5. Se você não precisar manter a função do IAM definida anteriormente, revogue -a agora.
Para obter a lista completa de parâmetros para a solicitação, consulte a página instances:export .

Exporte do seu servidor MySQL local usando mysqldump

Se você estiver exportando dados de um banco de dados MySQL local para importação em um banco de dados Cloud SQL, deverá usar o utilitário mysqldump com os seguintes sinalizadores:

  • --databases Você deve usar a opção --databases para especificar uma lista explícita de bancos de dados a serem exportados, e essa lista não deve conter o banco de dados do sistema mysql .
  • --hex-blob Se o seu banco de dados contiver campos binários, você deve usar este sinalizador para garantir que seus campos binários sejam importados corretamente.
  • --set-gtid-purged=OFF As informações de GTID não devem ser incluídas no arquivo de despejo SQL, e o registro binário não deve ser desabilitado pelo arquivo de despejo SQL. (Não necessário para MySQL 5.5 ou replicação externa.)
  • --single-transaction Inicia uma transação antes de executá-la. Em vez de bloquear o banco de dados inteiro, isso permite que o mysqldump leia o banco de dados no estado atual, resultando em um despejo de dados consistente.

Em uma 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 obter ajuda com mysqldump , consulte a referência mysqldump .

Replicação externa para Cloud SQL para MySQL

Para criar um arquivo de despejo para uso em uma configuração de servidor externo, consulte Replicando de um servidor externo .

Importar dados para o Cloud SQL para MySQL

Funções e permissões necessárias 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 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 um arquivo de despejo SQL para o Cloud SQL para MySQL

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

Console

  1. No Google Cloud console, 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 Escolha o arquivo do qual você gostaria de importar os dados , insira o caminho para o bucket e o arquivo de despejo SQL a serem usados ​​para a importação ou navegue até um arquivo existente.

    Você pode importar um arquivo compactado ( .gz ) ou descompactado ( .sql ).

  5. Para Formato , selecione SQL .
  6. Selecione o banco de dados para o qual deseja que os dados sejam 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 para realizar a importação, selecione o usuário.

    Se o arquivo de importação contiver instruções que devem ser executadas 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. Crie um bucket do Cloud Storage.
  2. Carregue o arquivo no seu bucket.

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

  3. Descreva a instância para a qual você está importando:
    gcloud sql instances describe INSTANCE_NAME
  4. Copie o campo serviceAccountEmailAddress .
  5. Use gcloud storage buckets add-iam-policy-binding para conceder a função storage.objectAdmin do IAM à conta de serviço do bucket.
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    Para obter ajuda na definição de permissões do IAM, consulte Usar permissões do IAM .
  6. Importar o banco de dados:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME

    Para obter 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 geralmente ocorre devido a problemas de permissões.

  7. 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 arquivo de despejo SQL. As instruções vinculadas definem determinados sinalizadores que tornam o arquivo de despejo compatível com o Cloud SQL.

  2. Crie um bucket do Cloud Storage.
  3. Carregue o arquivo no seu bucket.

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

  4. Forneça à sua instância as funções do IAM legacyBucketWriter e objectViewer para o seu bucket. Para obter ajuda na definição de permissões do IAM, consulte Usando permissões do IAM .
  5. Importe seu arquivo de despejo:

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

    • 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 sua solicitação, expanda uma destas opções:

    Você deve receber uma resposta JSON semelhante à seguinte:

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

REST v1beta4

  1. Crie um arquivo de despejo SQL. As instruções vinculadas definem determinados sinalizadores que tornam o arquivo de despejo compatível com o Cloud SQL.

  2. Crie um bucket do Cloud Storage.
  3. Carregue o arquivo no seu bucket.

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

  4. Forneça à sua instância a função storage.objectAdmin do IAM para o seu bucket. Para obter ajuda na definição de permissões do IAM, consulte "Usando permissões do IAM" .
  5. Importe seu arquivo de despejo:

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

    • 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 sua solicitação, expanda uma destas opções:

    Você deve receber uma resposta JSON semelhante à seguinte:

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

O que vem a seguir