Como exportar bancos de dados do Cloud Spanner para o Avro

Esta página descreve como exportar bancos de dados do Cloud Spanner com o Console do Google Cloud.

O processo usa o Dataflow e exporta dados para uma pasta em um bucket do Cloud Storage. A pasta resultante contém um conjunto de arquivos Avro e arquivos de manifesto JSON.

Para exportar um banco de dados do Cloud Spanner usando a API REST ou a ferramenta de linha de comando gcloud, conclua as etapas na seção Antes de começar nesta página, consulte as instruções detalhadas em Cloud Spanner para Cloud Storage Avro.

Antes de começar

Para exportar um banco de dados do Cloud Spanner, primeiro você precisa ativar as APIs Cloud Spanner, Cloud Storage, Compute Engine e Dataflow:

Ative as APIs

É preciso também ter cota suficiente e as permissões obrigatórias do IAM.

Requisitos de cota

Os requisitos de cota para jobs de exportação, do serviço do Google Cloud, são os seguintes:

  • Cloud Spanner: nenhuma capacidade de computação adicional é necessária para exportar um banco de dados, mas talvez você precise adicionar mais capacidade de computação para que seu job seja concluído em um tempo razoável. para começar. Consulte Como otimizar jobs para mais detalhes.
  • Cloud Storage: para exportar, crie um bucket para os arquivos exportados, caso ainda não tenha um. Faça isso no Console do Cloud, por meio da página do Cloud Storage ou ao criar sua exportação por meio da página do Cloud Spanner. Não é necessário definir um tamanho para o bucket.
  • Cloud Dataflow: os jobs de exportação estão sujeitos às mesmas cotas do Compute Engine para endereço IP, uso da CPU e do disco aplicadas a outros jobs do Dataflow.
  • Compute Engine: antes de executar um job de exportação, é necessário configurar cotas iniciais para o Compute Engine, que serão usadas pelo Dataflow. Essas cotas representam o número máximo de recursos que você permite que o Dataflow use para seu job. Os valores iniciais recomendados são:

    • CPUs: 200
    • Endereços IP em uso: 200
    • Disco permanente padrão: 50 TB

    Geralmente não é necessário fazer nenhum outro ajuste. O Dataflow fornece escalonamento automático para que você pague apenas pelos recursos efetivamente utilizados durante a exportação. Se seu job puder usar mais recursos, a IU do Dataflow exibirá um ícone de aviso. O job será concluído, mesmo que um ícone de aviso seja exibido.

Requisitos do IAM

Para exportar um banco de dados, é preciso também ter papéis do IAM com permissões suficientes para usar todos os serviços envolvidos em um job de exportação. Para informações sobre como conceder papéis e permissões, consulte Como aplicar papéis do IAM.

Para exportar um banco de dados, você precisa dos seguintes papéis:

  • No nível do projeto do Google Cloud:
    • Visualizador do Cloud Spanner
    • Administrador do Dataflow
    • Administrador do Storage
  • No nível do banco de dados ou da instância do Cloud Spanner, ou no nível do projeto do Google Cloud:
    • Leitor do Cloud Spanner
    • Administrador de banco de dados do Cloud Spanner (obrigatório apenas para jobs de importação)

Como exportar um banco de dados

Depois de atender aos requisitos de cota e do Cloud IAM descritos acima, é possível exportar um banco de dados já existente do Cloud Spanner.

Para exportar seu banco de dados do Cloud Spanner para um bucket do Cloud Storage, siga as seguintes etapas.

  1. Acesse a página Instâncias do Cloud Spanner.

    Acesse a página "Instâncias".

  2. Clique no nome da instância que contém o banco de dados.

  3. Clique no item de menu Importar/Exportar no painel esquerdo e depois no botão Exportar.

  4. Em Escolha onde armazenar sua exportação, clique em Procurar.

  5. Caso ainda não tenha um bucket do Cloud Storage para sua exportação, siga estas etapas:

    1. Clique em Novo bucket Captura de tela do novo elemento do bucket da IU.
    2. Digite um nome para o bucket. Os nomes de intervalos precisam ser exclusivos no Cloud Storage.
    3. Selecione uma classe e um local de armazenamento padrão e clique em Criar.
    4. Clique no bucket para selecioná-lo.

    Se você já tiver um bucket, selecione-o na lista inicial ou clique em Pesquisar Captura de tela do elemento de pesquisa da IU para filtrar a lista. Depois, clique no seu bucket para selecioná-lo.

  6. Clique em Selecionar.

  7. Selecione o banco de dados que você quer exportar no menu suspenso Escolher um banco de dados para exportar.

  8. (Opcional) Para exportar seu banco de dados de um ponto anterior, marque a caixa e digite um carimbo de data/hora.

  9. Selecione uma região no menu suspenso Escolha uma região para o job de exportação.

  10. (Opcional) Para criptografar o estado do pipeline do Dataflow com uma chave de criptografia gerenciada pelo cliente:

    1. Clique em Mostrar opções de criptografia.
    2. Selecione Usar uma chave de criptografia gerenciada pelo cliente (CMEK, na sigla em inglês).
    3. Selecione a chave na lista suspensa.

    Esta opção não afeta a criptografia no nível do bucket do Cloud Storage. Para ativar CMEK no bucket do Cloud Storage, consulte Como usar CMEK com o Cloud Storage.

  11. Marque a caixa de seleção em Confirmar cobranças para confirmar que há cobranças além das realizadas pela instância atual do Cloud Spanner.

  12. Clique em Exportar.

    O Console do Cloud exibe a página Importação/exportação de banco de dados, que agora exibe um item de linha para o job de exportação na lista de jobs de importação/exportação, incluindo o tempo decorrido para sua realização:

    Captura de tela do job em andamento

Quando o job é finalizado ou encerrado, o status é atualizado na lista de importação/exportação. Se o job for bem-sucedido, o status Concluído será exibido:

Mensagem de sucesso do job de exportação

Se o job falhar, o status Concluído será exibido:

Mensagem de falha do job de exportação

Para visualizar os detalhes da operação do Dataflow de um job, clique no nome do job na coluna Dataflow job name.

Se o job falhar, verifique os registros do Dataflow do job para ter acesso aos detalhes do erro.

Para evitar cobranças do Cloud Storage por arquivos criados por um job que falhou, exclua a pasta e seus arquivos. Consulte Como visualizar sua exportação para informações sobre como encontrar a pasta.

Como visualizar sua exportação no Cloud Storage

Para visualizar a pasta que contém o banco de dados exportado no Console do Cloud, vá até o navegador do Cloud Storage e clique no bucket selecionado anteriormente:

Acessar o navegador do Cloud Storage

O bucket agora contém uma pasta com o banco de dados exportado. O nome da pasta começa com o código da instância, o nome do banco de dados e o carimbo de data e hora do seu job de exportação. A pasta contém:

  • Um arquivo spanner-export.json
  • Um arquivo TableName-manifest.json para cada tabela do banco de dados exportado
  • Um ou mais arquivos TableName.avro-#####-of-##### O primeiro número na extensão .avro-#####-of-##### representa o índice do arquivo Avro, a partir de zero. O segundo representa o número de arquivos Avro gerados para cada tabela.

    Por exemplo, Songs.avro-00001-of-00002 é o segundo de dois arquivos que contêm os dados da tabela Songs.

Como escolher uma região para seu job de exportação

Convém escolher uma região diferente, dependendo de sua instância do Cloud Spanner usar uma configuração regional ou multirregional. Para evitar cobranças de saída de rede, escolha uma região que se sobreponha ao local da sua instância do Cloud Spanner.

Configurações de instâncias regionais

Se a configuração da sua instância do Cloud Spanner for regional, escolha a mesma região para o job de exportação para aproveitar a saída gratuita dentro de uma mesma região.

Se a mesma região não estiver disponível, serão efetuadas cobranças. Consulte os preços de saída de rede do Cloud Spanner para escolher uma região que gerará tarifas de saída de rede mais baixas.

Configurações de instâncias multirregionais

Se a configuração da instância do Cloud Spanner for multirregional, escolha uma das regiões que compõem a configuração multirregional para aproveitar a saída gratuita em uma mesma região.

Se não houver uma região sobreposta disponível, serão cobradas taxas de saída. Consulte os preços de saída de rede do Cloud Spanner para escolher uma região que gerará tarifas de saída de rede mais baixas.

Como visualizar ou solucionar problemas de jobs na IU do Dataflow

Depois de iniciar um job de exportação, é possível ver os detalhes dele, incluindo registros, na seção do Dataflow do Console do Cloud.

Como visualizar detalhes do job do Dataflow

Para ver detalhes de jobs de importação/exportação executados na última semana, incluindo quaisquer jobs em execução no momento:

  1. Navegue até a página Visão geral do banco de dados.
  2. Clique no item de menu à esquerda Importar/Exportar. A página Importar/Exportar do banco de dados exibe uma lista de jobs recentes.
  3. Na página Importar/Exportar do banco de dados, clique no nome do job na coluna Nome do job do Dataflow:

    Mensagem de status do job em andamento

    O Console do Cloud exibe detalhes do job do Dataflow.

Para visualizar um job executado há mais de uma semana, siga estas etapas:

  1. Acesse a página de jobs do Dataflow no Console do Cloud.

    Acessar a página de jobs (em inglês)

  2. Encontre seu job na lista e clique no nome dele.

    O Console do Cloud exibe detalhes do job do Dataflow.

Como visualizar registros do Dataflow para seu job

Para visualizar os registros de um job do Dataflow, navegue até a página de detalhes do job, conforme descrito acima. Em seguida, clique em Registros, à direita do nome do job.

Se um job falhar, procure erros nos registros. Se houver erros, a contagem de erros será exibida ao lado de Registros:

Exemplo de contagem de erros ao lado do botão Registros

Para ver os erros do job, siga estas etapas:

  1. Clique na contagem de erros, ao lado de Registros.

    O Console do Cloud exibe os registros do job. Pode ser necessário rolar para visualizar os erros.

  2. Localize entradas com o ícone de erro Ícone de erro.

  3. Clique em uma entrada de registro individual para expandir seu conteúdo.

Para mais informações sobre como solucionar problemas de jobs do Dataflow, consulte Solução de problemas do pipeline.

Os requisitos de cota para jobs de exportação, do serviço do Google Cloud, são os seguintes:

Se você vir os seguintes erros nos registros do job:

com.google.cloud.spanner.SpannerException: NOT_FOUND: Session not found

--or--

com.google.cloud.spanner.SpannerException: DEADLINE_EXCEEDED: Deadline expired before operation could complete.

Verifique a latência de leitura de 99% na guia Monitoramento do banco de dados do Cloud Spanner no Console do Cloud. Se ele mostra valores altos (vários segundos), indica que a instância está sobrecarregada, fazendo com que as leituras atinjam o tempo limite e falhem.

Uma causa da alta latência é que o job do Dataflow está sendo executado usando muitos workers, colocando muita carga na instância do Cloud Spanner.

Para especificar um limite em relação ao número de workers do Dataflow, em vez de usar a guia "Importar/Exportar" na página de detalhes da instância do banco de dados do Cloud Spanner no Console do Cloud, inicie a exportação usando o Dataflow Modelo Cloud Spanner para Cloud Storage Avro e especifique o número máximo de workers, conforme descrito abaixo: .
  • Se você estiver usando o console do Dataflow, o parâmetro Max workers estará localizado na seção Parâmetros opcionais da página Criar job a partir de modelo. para começar.

  • Se você estiver usando o gcloud, especifique o argumento max-workers. Exemplo:

    gcloud dataflow jobs run my-export-job \
    --gcs-location='gs://dataflow-templates/latest/Cloud_Spanner_to_GCS_Avro' \
    --region=us-central1 \
    --parameters='instanceId=test-instance,databaseId=example-db,outputDir=gs://my-gcs-bucket' \
    --max-workers=10
    

Como otimizar jobs de exportação de execução lenta

Se as sugestões das configurações iniciais foram seguidas, geralmente não será necessário fazer nenhum outro ajuste. Se o job estiver sendo executado lentamente, é possível tentar outras otimizações:

  • Otimize o local do job e dos dados: execute o job do Cloud Dataflow na mesma região em que estão localizados o bucket do Cloud Storage e a instância do Cloud Spanner.

  • Garanta recursos suficientes do Dataflow: se as cotas relevantes do Compute Engine limitarem os recursos do job do Dataflow, a página do Dataflow no Console do Google Cloud exibirá um ícone de aviso Ícone de aviso e mensagens de registro:

    Captura de tela do aviso de limite de cota

    Nessa situação, é possível reduzir o ambiente de execução do job aumentando as cotas (em inglês) para CPUs, endereços IP em uso e disco permanente padrão. Porém, isso pode resultar em mais cobranças do Compute Engine.

  • Verifique a utilização da CPU do Cloud Spanner: é possível aumentar a capacidade de computação nesse caso, caso a utilização da CPU para ela seja superior a 65%. instância. A capacidade adiciona mais recursos do Cloud Spanner e o job deve acelerar, mas gera mais cobranças do Cloud Spanner.

Fatores que afetam o desempenho do job de exportação

Vários fatores influenciam o tempo necessário para concluir um job de exportação.

  • Tamanho do banco de dados do Cloud Spanner: o processamento de mais dados leva mais tempo e exige mais recursos.

  • Esquema do banco de dados do Cloud Spanner: o número de tabelas, o tamanho das linhas, o número de índices secundários e o número de chaves estrangeiras influenciam o tempo necessário para executar um job de exportação.

  • Local dos dados: os dados são transferidos entre o Cloud Spanner e o Cloud Storage usando o Dataflow. O ideal é que os três componentes estejam localizados na mesma região. Se não estiverem, a movimentação dos dados pelas regiões prejudica a velocidade de execução do job.

  • Número de workers do Dataflow: os workers ideais do Dataflow são necessários para um bom desempenho. Ao usar o escalonamento automático, o Dataflow escolhe o número de workers para o job, dependendo da quantidade de trabalho que precisa ser feita. No entanto, o número de workers terá o limite de cotas para CPUs, endereços IP em uso e disco permanente padrão. A IU do Dataflow exibirá um ícone de aviso se encontrar limites de cota. Nessa situação, o progresso será mais lento, mas ainda assim o job será concluído.

  • Carga existente no Cloud Spanner: um job de exportação normalmente adiciona uma carga leve a uma instância do Cloud Spanner. Se a instância já tiver uma carga atual substancial, a execução do job será mais lenta.

  • Quantidade da capacidade de computação do Cloud Spanner: se o uso da CPU para a instância for superior a 65%, o job será executado mais lentamente.