Como importar dados de bancos de dados que não sejam do Cloud Spanner

Nesta página, descrevemos como preparar arquivos Avro que você exportou de bancos de dados que não são do Cloud Spanner e, em seguida, importá-los para o Cloud Spanner. Se quiser importar um banco de dados do Cloud Spanner que já foi exportado, consulte Como importar arquivos Avro do Cloud Spanner.

O processo usa o Cloud Dataflow. Ele importa dados de um intervalo do Cloud Storage que contém um arquivo de manifesto JSON e um conjunto de arquivos Avro.

Antes de começar

Para exportar um banco de dados do Cloud Spanner, é necessário primeiro ativar as APIs Cloud Spanner, Cloud Storage, Compute Engine e Cloud Dataflow:

Ativar a de APIs

É preciso também ter cota suficiente e as permissões necessárias do Cloud IAM.

Requisitos de cota

Estes são os requisitos de cota para jobs de importação por serviço de GCP:

  • Cloud Spanner: é necessário ter nós suficientes para suportar o volume de dados que estão sendo importados. Não é necessário incluir qualquer outro nó para importar um banco de dados. No entanto, talvez seja necessário adicionar nós para que o job seja concluído dentro de um prazo razoável. Consulte Como otimizar jobs para saber mais detalhes.
  • Cloud Storage: é necessário ter um intervalo contendo os arquivos exportados anteriormente. Não é necessário definir um tamanho para o intervalo.
  • Cloud Dataflow: os jobs de importaçã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 Cloud Dataflow.
  • Compute Engine: antes de executar um job de importação, é necessário configurar cotas iniciais para o Compute Engine, que serão usadas pelo Cloud Dataflow. Essas cotas representam o número máximo de recursos autorizados ao Cloud Dataflow para escalonar o 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 Cloud Dataflow fornece escalonamento automático para que você pague apenas pelos recursos efetivamente utilizados durante a importação. Se o job precisar de mais recursos, a IU do Cloud Dataflow exibirá um ícone de aviso. O job deve ser concluído, ainda que um ícone de aviso esteja sendo exibido.

Requisitos do Cloud IAM

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

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

  • No nível do projeto do GCP:
    • Visualizador do Cloud Spanner
    • Administrador do Cloud Dataflow
    • Administrador do Storage
  • No nível do banco de dados ou da instância do Cloud Spanner ou para envolvidos no projeto do GCP:
    • Administrador do banco de dados do Cloud Spanner

Como exportar dados de um banco de dados que não seja do Cloud Spanner para arquivos Avro

O processo de importação traz dados de arquivos Avro localizados em um intervalo do Cloud Storage. É possível exportar dados no formato Avro de qualquer fonte e usar qualquer método disponível para fazer isso.

Tenha isto em mente ao exportar seus dados:

  • É possível exportar usando qualquer um dos tipos primitivos do Avro, bem como o tipo complexo de matriz.
  • Cada coluna nos seus arquivos Avro precisa usar um dos seguintes tipos de colunas:

    • ARRAY
    • BOOL
    • BYTES
    • DOUBLE
    • FLOAT
    • INT
    • LONG*
    • STRING*

    *É possível importar um LONG armazenando um carimbo de data/hora ou um STRING armazenando um carimbo de data/hora como um Cloud Spanner TIMESTAMP. Consulte os mapeamentos recomendados abaixo para ver detalhes.

  • Não é necessário incluir ou gerar metadados ao exportar os arquivos Avro.

  • Não é necessário seguir nenhuma convenção de nomenclatura específica para seus arquivos.

Se você não exportar seus arquivos diretamente para o Cloud Storage, precisará fazer o upload dos arquivos Avro para um intervalo do Cloud Storage. Para ver instruções detalhadas, consulte Como fazer upload de objetos.

Como criar o esquema para o banco de dados do Cloud Spanner

Antes de executar sua importação, é preciso criar a tabela de destino no Cloud Spanner e definir seu esquema.

É necessário criar um esquema que use o tipo de coluna apropriado para cada coluna nos arquivos Avro.

Tipo de coluna Avro Tipo de coluna Cloud Spanner
ARRAY ARRAY
BOOL BOOL
BYTES BYTES
DOUBLE FLOAT64
FLOAT FLOAT64
INT INT64
LONG

INT64

TIMESTAMP (quando LONG representa um carimbo de data/hora do número de microssegundos desde 1970-01-01 00:00:00 UTC)

STRING

STRING

TIMESTAMP (quando STRING representa um carimbo de data/hora no formato canônico para consultas SQL)

É recomendável criar índices secundários depois de importar seus dados para o Cloud Spanner, em vez de definir inicialmente o esquema para a tabela.

Como criar um arquivo spanner-export.json

Também é preciso criar um arquivo chamado spanner-export.json em seu intervalo do Cloud Storage. Este arquivo contém uma matriz de tables que lista o nome e os locais dos arquivos de dados para cada tabela.

Os conteúdos do arquivo têm o seguinte formato:

{
  "tables": [
   {
    "name": "TABLE1",
    "dataFiles": [
      "RELATIVE/PATH/TO/TABLE1_FILE1",
      "RELATIVE/PATH/TO/TABLE1_FILE2"
    ]
   },
   {
    "name": "TABLE2",
    "dataFiles": ["RELATIVE/PATH/TO/TABLE2_FILE1"]
   }
  ]
}

Como executar um job de importação do Cloud Dataflow usando a gcloud

Para iniciar seu job de importação, siga as instruções para usar a ferramenta de linha de comando gcloud para executar um job com o modelo Avro para Cloud Spanner.

Depois de iniciar um job de importação, é possível ver detalhes sobre o job no Console do GCP.

Depois que o job de importação for concluído, adicione os índices secundários necessários.

Como escolher uma região para o job de importação

Convém escolher uma região diferente dependendo da configuração que o intervalo do Cloud Storage usa: regional ou multirregional. Para evitar cobranças de saída de rede, escolha uma região que se sobreponha ao local do seu intervalo do Cloud Storage.

Locais de intervalos regionais

Se o local do intervalo do Cloud Storage for regional, escolha a mesma região para o job de importação, caso ela esteja disponível para aproveitar o uso gratuito da rede.

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

Locais de intervalos multirregionais

Se o local do intervalo do Cloud Storage for multirregional, escolha uma das regiões que compõem esse local para aproveitar o uso gratuito da rede.

Se não houver uma região sobreposta disponível, haverá cobranças de saída. Consulte os preços de saída de rede do Cloud Storage para escolher uma região que incorra tarifas de saída de rede mais baixas.

Como visualizar ou solucionar problemas de jobs na IU do Cloud Dataflow

Depois de iniciar um job de importação, é possível visualizar detalhes do job, inclusive registros, na seção Cloud Dataflow do Console do GCP.

Como visualizar detalhes do job do Cloud Dataflow

Para ver detalhes de um job que está sendo executado, siga estas etapas:

  1. Acesse a página Detalhes do banco de dados para encontrar o banco de dados importado.
  2. Clique em Visualizar detalhes do job no Cloud Dataflow na mensagem de status do job:

    Mensagem de status do job em andamento

    O Console do GCP exibe detalhes do job do Cloud Dataflow.

Para visualizar um job executado recentemente, siga estas etapas:

  1. Acesse a página Detalhes do banco de dados para encontrar o banco de dados importado.
  2. Clique na guia Importar/Exportar.
  3. Clique no nome do seu job na lista.

    O Console do GCP exibe detalhes do job do Cloud Dataflow.

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

  1. Acesse a página de jobs do Cloud Dataflow no Console do GCP.
    Ir para a página de jobs
  2. Encontre seu job na lista e clique no nome dele.

    O Console do GCP exibe detalhes do job do Cloud Dataflow.

Como visualizar registros de um job do Cloud Dataflow

Para visualizar os registros de um job do Cloud Dataflow, acesse a página de detalhes do job, conforme descrito acima, e 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 GCP 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 o conteúdo dele.

Para mais informações sobre como solucionar problemas de job do Cloud Dataflow, consulte Solução de problemas de canais.

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

Se as sugestões das configurações iniciais forem 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 intervalo do Cloud Storage e a instância do Cloud Spanner.

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

    Captura de tela de aviso de limite de cota

    Nesse caso, aumentar as cotas para CPUs, endereços IP em uso e disco permanente padrão pode reduzir o tempo de execução do job, mas você pode receber cobranças mais altas do Compute Engine.

  • Verifique a utilização da CPU do Cloud Spanner: se você perceber que a utilização da CPU para a instância é superior a 75%, é possível aumentar o número de nós nessa instância. Os nós extras adicionam mais recursos do Cloud Spanner e isso deve acelerar o job, mas resultará em cobranças adicionais do Cloud Spanner.

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

Vários fatores influenciam o tempo necessário para concluir um job de importaçã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 (incluindo índices): o número de tabelas, o tamanho das linhas e o número de índices secundários influenciam o tempo necessário para executar um job de importação.

  • Localização dos dados: os dados são transferidos entre o Cloud Spanner e o Cloud Storage pelo Cloud 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 Cloud Dataflow: usando o escalonamento automático, o Cloud Dataflow escolhe o número de workers para o job, dependendo da quantidade de trabalho que precisa ser feita. O número de workers, no entanto, será limitado pelas cotas para CPUs, endereços IP em uso e disco permanente padrão. A IU do Cloud Dataflow exibe um ícone de aviso caso encontre limites de cota. Nessa situação, o progresso será mais lento, mas ainda assim o job deve ser concluído.

  • Carga existente no Cloud Spanner: um job de importação adiciona carga significativa da CPU em uma instância do Cloud Spanner. Se a instância já tiver uma carga substancial, o job de importação será executado ainda mais lentamente.

  • Número de nós do Cloud Spanner: se a utilização da CPU para a instância for superior a 75%, o job será executado mais lentamente.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Spanner