Exporte e importe com ficheiros de captura SQL

Esta página descreve a exportação e a importação de dados para instâncias do Cloud SQL através de ficheiros de despejo de SQL.

Antes de começar

As exportações usam recursos da base de dados, mas não interferem com as operações normais da base de dados, a menos que a instância tenha um aprovisionamento insuficiente.

Para ver as práticas recomendadas, consulte o artigo Práticas recomendadas para importar e exportar dados.

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

Exporte dados do Cloud SQL para MySQL

Funções e autorizações necessárias para exportar a partir do Cloud SQL para MySQL

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 para um ficheiro de captura SQL a partir do Cloud SQL para MySQL

Para criar um ficheiro de captura SQL, exporte dados do Cloud SQL para o Cloud Storage. Depois de o ficheiro estar no Cloud Storage, pode importá-lo para outra base de dados do Cloud SQL. Também pode transferir dados do Cloud Storage para o seu ambiente local se quiser aceder a eles 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, o mysqldump inicia uma transação antes da execução. Em vez de bloquear toda a base de dados, isto permite que o mysqldumpleia a base de dados no estado atual, o que resulta numa transferência de dados consistente.

Se o seu ficheiro de despejo SQL contiver cláusulas DEFINER (vistas, acionadores, stored_procedures, etc.), a utilização deste ficheiro 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.

Para exportar dados de uma base de dados numa instância do Cloud SQL para um ficheiro de despejo SQL num contentor do Cloud Storage:

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Clique em Exportar.
  4. Na secção Formato de ficheiro, clique em SQL para criar um ficheiro de captura SQL.
  5. Na secção Dados a exportar, clique em Uma ou mais bases de dados nesta instância para exportar bases de dados específicas.
  6. Use o menu pendente para selecionar as bases de dados a partir das quais quer exportar.
  7. Na secção Destino, selecione Procurar para pesquisar um contentor ou uma pasta do Cloud Storage para a sua exportação.
  8. Clique em Exportar para iniciar a exportação.

gcloud

  1. Crie um contentor do Cloud Storage.
  2. Encontre a conta de serviço da instância do Cloud SQL a partir da qual está a fazer a exportação. Pode fazê-lo executando o comando gcloud sql instances describe. Procure o campo serviceAccountEmailAddress no resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Use gcloud storage buckets add-iam-policy-binding para conceder a storage.objectAdmin função IAM à conta de serviço. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.
  4. Exporte a base de dados para o seu contentor 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 acionadores nem procedimentos armazenados, mas contém vistas. Para exportar acionadores e/ou procedimentos armazenados, use a ferramenta mysqldump.

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

  5. Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.

REST v1

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

    Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.

  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 Usar autorizações de IAM.
  3. Exporte a sua base de dados:

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

    • PROJECT_ID: o ID do projeto
    • INSTANCE_ID: o ID da instância
    • BUCKET_NAME: o nome do contentor do Cloud Storage
    • PATH_TO_DUMP_FILE: o caminho para o ficheiro de captura SQL
    • DATABASE_NAME_1: o nome de uma base de dados na instância do Cloud SQL
    • DATABASE_NAME_2: o nome de uma base de dados na 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 do pedido:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
          "databases": ["DATABASE_NAME"],
          "offload": TRUE | FALSE
        }
    }
    

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

    Deve receber uma resposta JSON semelhante à seguinte:

  5. Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
Para ver a lista completa de parâmetros do pedido, consulte a página instances:export.

REST v1beta4

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

    Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.

  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 Usar autorizações de IAM.
  3. Exporte a sua base de dados:

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

    • PROJECT_ID: o ID do projeto
    • INSTANCE_ID: o ID da instância
    • BUCKET_NAME: o nome do contentor do Cloud Storage
    • PATH_TO_DUMP_FILE: o caminho para o ficheiro de captura SQL
    • DATABASE_NAME_1: o nome de uma base de dados na instância do Cloud SQL
    • DATABASE_NAME_2: o nome de uma base de dados na 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 do pedido:

    {
      "exportContext":
        {
           "fileType": "SQL",
           "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
           "databases": ["DATABASE_NAME"],
           "offload": TRUE | FALSE
         }
     }
    

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

    Deve receber uma resposta JSON semelhante à seguinte:

  5. Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
Para ver a lista completa de parâmetros do pedido, consulte a página instances:export.

Exporte a partir do seu servidor MySQL local através do mysqldump

Se estiver a exportar dados de uma base de dados do MySQL no local para importação para uma base de dados do Cloud SQL, tem de usar o utilitário mysqldump com as seguintes flags:

  • --databases Tem de usar a opção --databases para especificar uma lista explícita de bases de dados a exportar, e esta lista não pode conter a base de dados do sistema mysql.
  • --hex-blob Se a sua base de dados contiver campos binários, tem de usar esta flag para garantir que os campos binários são importados corretamente.
  • --set-gtid-purged=OFF As informações de GTID não podem ser incluídas no ficheiro de captura SQL e o registo binário não pode ser desativado pelo ficheiro de captura SQL. (Não é necessário para o MySQL 5.5 ou a replicação externa.)
  • --single-transaction Inicia uma transação antes da execução. Em vez de bloquear toda a base de dados, isto permite que o mysqldump leia a base de dados no estado atual, o que resulta num despejo de dados consistente.

Numa linha de comandos, 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 o mysqldump, consulte a referência do mysqldump.

Replicação externa para o Cloud SQL para MySQL

Para criar um ficheiro de despejo para utilização numa configuração de servidor externo, consulte o artigo Replicação a partir de um servidor externo.

Importe dados para o Cloud SQL para MySQL

Funções e autorizações necessárias para a importação 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 um ficheiro de captura SQL para o Cloud SQL para MySQL

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

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Clique em Importar.
  4. Na secção Escolha o ficheiro a partir do qual quer importar dados, introduza o caminho para o contentor e o ficheiro de despejo de SQL a usar para a importação, procure um ficheiro existente ou carregue um ficheiro local.

    Pode importar um ficheiro comprimido (.gz) ou não comprimido (.sql).

  5. Em Formato, selecione SQL.
  6. Selecione a base de dados para a qual quer importar os dados.

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

  7. Se quiser especificar um utilizador para realizar a importação, selecione o utilizador.

    Se o seu ficheiro de importação contiver declarações que têm de ser realizadas por um utilizador específico, use este campo para especificar esse utilizador.

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

gcloud

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

    Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.

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

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

    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 de manter as autorizações de IAM que definiu anteriormente, remova-as através do comando gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crie um ficheiro de captura SQL. O conjunto de instruções associado define determinadas flags que tornam o ficheiro de despejo compatível com o Cloud SQL.

  2. Crie um contentor do Cloud Storage.
  3. Carregue o ficheiro para o seu contentor.

    Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.

  4. Faculte à sua instância as funções de IAM legacyBucketWritereobjectViewer para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.
  5. Importe o ficheiro de despejo:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do contentor do Cloud Storage
    • path_to_sql_file: o caminho para o ficheiro SQL
    • database_name: o nome de uma base de dados na 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 do pedido:

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

    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 instances:import.
  6. Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as agora.

REST v1beta4

  1. Crie um ficheiro de captura SQL. O conjunto de instruções associado define determinadas flags que tornam o ficheiro de despejo compatível com o Cloud SQL.

  2. Crie um contentor do Cloud Storage.
  3. Carregue o ficheiro para o seu contentor.

    Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.

  4. Faculte à sua instância a storage.objectAdmin função do IAM para o seu contentor. Para obter ajuda com a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.
  5. Importe o ficheiro de despejo:

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

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • bucket_name: o nome do contentor do Cloud Storage
    • path_to_sql_file: o caminho para o ficheiro SQL
    • database_name: o nome de uma base de dados na 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 do pedido:

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

    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 instances:import.
  6. Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as agora.

O que se segue?