Exportação de dados

Nesta página, você verá como exportar dados de instâncias do Cloud SQL.

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 para exportação de dados, consulte Práticas recomendadas para importação e exportação de dados.

Antes de começar

Papéis e permissões necessárias

Para exportar dados para o Cloud Storage, a conta de serviço ou o usuário precisa ter um dos seguintes conjuntos de papéis:

  • Os papéis do Editor do Cloud SQL e do IAM roles/storage.legacyBucketWriter.
  • Um papel personalizado, incluindo as seguintes permissões:
    • cloudsql.instances.get
    • cloudsql.instances.export
    • storage.buckets.create
    • storage.objects.create

Se a conta de serviço ou usuário também estiver executando operações de importação, talvez seja mais conveniente conceder o papel IAM Storage Object Admin para ter todas as permissões necessárias para importação e exportação.

Para receber ajuda com os papéis do IAM, consulte Cloud Identity and Access Management para o Cloud Storage.

Como exportar dados do Cloud SQL para um arquivo BAK no Cloud Storage

Para exportar dados de um banco de dados em uma instância do Cloud SQL para um arquivo BAK em um bucket do Cloud Storage, siga estas instruções:

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Clique no nome da instância para abrir a página Visão geral correspondente.
  3. Clique em Exportar.
  4. Na seção Formato do arquivo, clique em BAK.
  5. Na seção Dados a serem exportados, use o menu suspenso para selecionar o banco de dados do qual você quer exportar.
  6. Na seção Destino, selecione Procurar para pesquisar um bucket ou uma pasta do Cloud Storage para a exportação.
  7. Clique em Exportar para iniciar a exportação.

gcloud

  1. Crie um bucket do Cloud Storage, caso ainda não tenha feito isso.

    Se precisar de ajuda para criar um bucket, consulte Como criar buckets de armazenamento.

  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. 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
      
  4. 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.
  5. Exporte o banco de dados:
    gcloud beta sql export bak INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.sql.gz \
    --database=DATABASE_NAME
      

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

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

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": "BAK",
          "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 dessa solicitação, consulte a página instances:export.

Como automatizar operações de exportação

Embora o Cloud SQL não forneça uma maneira integrada de automatizar exportações de banco de dados, é possível criar sua própria ferramenta de automação usando vários componentes do Google Cloud. Para saber mais, consulte este tutorial.

Solução de problemas

Clique nos links da tabela para ver detalhes:

Para este problema... O problema pode ser... Tente o seguinte...
Não é possível ver o status da operação. A interface do usuário mostra apenas sucesso ou falha. Use estes comandos do banco de dados para saber mais.
Conexão fechada durante a operação de exportação. A consulta precisa produzir dados nos primeiros sete minutos. Teste a consulta manualmente. Saiba mais.
Erro desconhecido durante a exportação. Possível problema de largura de banda. Verifique se a instância e o bucket do Cloud Storage estão na mesma região.
Você quer automatizar as exportações. O Cloud SQL não oferece uma maneira de automatizar exportações. Crie seu próprio pipeline para executar essa funcionalidade. Saiba mais.

Não é possível ver o status da operação

Não é possível ver o status de uma operação em andamento.

O problema pode ser

O Console do Google Cloud informa apenas o sucesso ou falha no momento da conclusão e não foi projetado para retornar avisos.

O que você pode tentar

Conecte-se ao banco de dados e execute SHOW WARNINGS.


Conexão fechada durante a operação de exportação

Conexão fechada durante a operação de exportação.

O problema pode ser

A conexão com o Cloud Storage pode expirar porque a consulta em execução na exportação não está produzindo nenhum dado nos primeiros sete minutos desde que a exportação foi iniciada.

O que você pode tentar

Teste a consulta manualmente conectando-se a partir de qualquer cliente e enviando a saída da consulta para STDOUT com o comando abaixo:

COPY (INSERT_YOUR_QUERY_HERE) TO STDOUT WITH ( FORMAT csv, DELIMITER ',', ENCODING 'UTF8', QUOTE '"', ESCAPE '"' ).

Esse é o comportamento esperado, porque quando a exportação é iniciada, o cliente deve começar a enviar dados imediatamente. Caso a conexão continue sem dados enviados, ela acaba sendo interrompida e, por fim, resultando em falha na exportação e deixando a operação em um estado incerto. Além disso, é isso que a mensagem de erro do gcloud está tentando dizer com esta mensagem:

operation is taking longer than expected.


Erro desconhecido durante a exportação

Você verá a mensagem de erro Unknown error ao tentar exportar um banco de dados para um bucket do Cloud Storage.

O problema pode ser

A transferência pode falhar devido a um problema de largura de banda.

A instância do Cloud SQL pode estar em uma região diferente do bucket do Cloud Storage. A leitura e a gravação de dados de um continente para outro envolve muito uso de rede e pode causar problemas intermitentes como esse. Verifique as regiões da instância e do bucket.

O que você pode tentar

Mover o bucket do Cloud Storage para mais perto da instância do Cloud SQL. Executar a operação em um período de menor atividade.

Querer automatizar exportações

Você quer automatizar as exportações.

O problema pode ser

O Cloud SQL não oferece uma maneira de automatizar exportações.

O que você pode tentar

É possível criar seu próprio sistema de exportação automatizada usando produtos do Google Cloud, como Cloud Scheduler, Pub/Sub e Cloud Functions.


Houve um erro de sistema ERROR_RDBMS

Você vê a mensagem de erro [ERROR_RDBMS] system error occurred.

O problema pode ser

  • O usuário pode não ter todas as permissões necessárias do Cloud Storage.
  • A tabela de banco de dados pode não existir.

O que você pode tentar

  1. Verifique se você tem pelo menos as permissões WRITER no bucket e READER no arquivo de exportação. Para mais informações sobre como configurar o controle de acesso no Cloud Storage, consulte Criar e gerenciar listas de controle de acesso.
  2. Verifique se a tabela existe. Se a tabela existir, confirme se você tem as permissões corretas no bucket.

A seguir