Como migrar dados a partir do Amazon Redshift

Visão geral

Neste documento, descrevemos o processo de migração de dados do Amazon Redshift para o BigQuery.

O serviço de transferência de dados do BigQuery permite que você copie seus dados de um armazenamento do Amazon Redshift para o BigQuery. O serviço mobilizará os agentes de migração no GKE e acionará uma operação de descarregamento do Amazon Redshift para uma área de preparo em um intervalo do Amazon S3. Em seguida, o serviço de transferência envia seus dados do intervalo do Amazon S3 para o BigQuery.

O diagrama a seguir mostra o fluxo geral dos dados entre um armazenamento do Amazon Redshift e o BigQuery durante uma migração.

Antes de começar

Nesta seção, descrevemos de forma detalhada o processo de configuração de uma migração de dados do Amazon Redshift para o BigQuery. As etapas são as seguintes:

  • Atender aos pré-requisitos e definir as permissões no Google Cloud Platform.
  • Conceder acesso ao seu cluster do Amazon Redshift.
  • Conceder acesso ao seu intervalo de preparo do Amazon S3.
  • Configurar a migração com o serviço de transferência de dados do BigQuery. Você precisará dos seguintes itens:
    • URL do Amazon Redshift JDBC. Siga estas instruções para encontrá-lo
    • Nome de usuário e senha do banco de dados do Amazon Redshift
    • Par de chaves de acesso do AWS, que você aprenderá a coletar na etapa Conceder acesso ao seu intervalo do S3
    • URI do intervalo do Amazon S3, que você usará para organizar temporariamente os dados. É recomendável configurar uma política de ciclo de vida nesse intervalo a fim de evitar cobranças desnecessárias. Recomenda-se um período de expiração de 24 horas de forma que haja tempo suficiente para transferir todos os dados ao BigQuery.

Requisitos do Google Cloud Platform

Para garantir uma migração bem-sucedida do Amazon Redshift, realize as etapas a seguir no Google Cloud Platform.

  1. Escolha ou crie um projeto do Google Cloud Platform para armazenar seus dados de migração.

  2. Ative a API BigQuery Data Transfer Service.

    No Console do Google Cloud Platform, clique no botão Ativar na página API BigQuery Data Transfer Service.

    Ativar API

    O BigQuery será ativado automaticamente nos novos projetos, mas talvez seja necessário ativar a API BigQuery para os existentes. Uma marca de seleção verde indica que ela já está ativa.

    API ativada

  3. Crie um conjunto de dados do BigQuery para armazenar os dados. Não é preciso criar tabelas.

  4. Permita os pop-ups do bigquery.cloud.google.com no seu navegador para que você possa ver a janela de permissões ao configurar a transferência. É necessário conceder ao serviço de transferência de dados do BigQuery a permissão de gerenciamento do processo.

Conceder acesso ao seu cluster do Amazon Redshift

Siga as instruções da Amazon (em inglês) para colocar os seguintes endereços IP na lista de permissões. Também é possível adicionar na lista de permissões os endereços IP que correspondem à localização do seu conjunto de dados ou todos os endereços IP na tabela abaixo, que são de propriedade do Google e reservados para migrações de dados do Amazon Redshift.

EUA
(us multi-region)
Tóquio
(asia-northeast1)
UE
(eu multi-region)
Londres
(europe-west2)
Austrália
(australia-southeast1)
35.185.196.212
35.197.102.120
35.185.224.10
35.185.228.170
35.197.5.235
35.185.206.139
35.197.67.234
35.197.38.65
35.185.202.229
35.185.200.120
34.85.11.246
34.85.30.58
34.85.8.125
34.85.38.59
34.85.31.67
34.85.36.143
34.85.32.222
34.85.18.128
34.85.23.202
34.85.35.192
34.76.156.158
34.76.156.172
34.76.136.146
34.76.1.29
34.76.156.232
34.76.156.81
34.76.156.246
34.76.102.206
34.76.129.246
34.76.121.168
35.189.119.113
35.189.101.107
35.189.69.131
35.197.205.93
35.189.121.178
35.189.121.41
35.189.85.30
35.197.195.192
35.189.33.150
35.189.38.5
35.189.29.88
35.189.22.179
35.189.20.163
35.189.29.83
35.189.31.141
35.189.14.219

Conceder acesso ao seu intervalo do Amazon S3

Você precisará de um intervalo do S3 para usar como área de preparo a fim de transferir os dados do Amazon Redshift para o BigQuery. Veja instruções detalhadas da Amazon neste link (em inglês).

  1. Recomendamos que você crie um usuário de IAM dedicado do Amazon e conceda a ele apenas acesso de leitura ao Redshift e de leitura/gravação ao S3. É possível fazer isso aplicando as seguintes políticas:

    Permissões de migração do Amazon Redshift

  2. Crie um par de chaves de acesso do usuário de IAM do Amazon.

Opcional: controle de carga de trabalho com uma fila de migração separada

É possível definir uma fila do Amazon Redshift para a migração de forma a limitar e separar os recursos usados no processo. Essa fila pode ser configurada com uma contagem máxima de consultas de simultaneidade. Em seguida, você pode associar um determinado grupo de usuários de migração à fila e usar essas credenciais ao configurar o processo de transferência de dados para o BigQuery. O serviço de transferência só terá acesso à fila de migração.

Como configurar uma migração do Amazon Redshift

Configurar uma transferência do Amazon Redshift:

Console

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Transferências.

  3. Clique em Adicionar transferência.

  4. Na página Nova transferência:

    • Em Origem, escolha Migração: Amazon Redshift.
    • Em Nome de exibição, digite um nome para a transferência, como My migration. Esse nome pode ter qualquer valor que identifique facilmente o processo, caso seja necessário modificá-lo no futuro.
    • Em Conjunto de dados de destino, escolha o conjunto de dados apropriado.

      Novas informações gerais sobre a migração do Amazon Redshift

  5. Em Detalhes da fonte de dados, continue inserindo detalhes específicos da transferência do Amazon Redshift.

    • Em URL de conexão JDBC para Amazon Redshift, forneça o URL de JDBC para acessar seu cluster do Amazon Redshift.
    • Em Nome de usuário do seu banco de dados, digite o nome de usuário do banco de dados do Amazon Redshift que você gostaria de migrar.
    • Em Senha do seu banco de dados, insira a senha do banco de dados.
    • Em Código da chave de acesso e Chave de acesso secreta, insira o par de chaves de acesso que você coletou na etapa Conceder acesso ao seu intervalo do S3.
    • Em URI do Amazon S3, insira o URI do intervalo do S3 que você usará como uma área de preparo.
    • Em Esquema do Amazon Redshift, insira o esquema que você está migrando.
    • Em Padrões de nome da tabela, especifique um nome ou padrão que corresponda aos nomes das tabelas no esquema. É possível usar expressões regulares para especificar o padrão no formulário: <table1Regex>;<table2Regex>. Esse padrão precisa seguir a sintaxe da expressão regular do Java.

      Novos detalhes sobre a fonte de dados de migração do Amazon Redshift

    • (Opcional) Na seção Opções de notificação, faça o seguinte:

      • Clique no botão para ativar as notificações por e-mail. Quando você ativa essa opção, o administrador de transferência recebe uma notificação por e-mail se uma execução de transferência falha.
      • Em Selecionar um tópico do Cloud Pub/Sub, escolha o nome do seu tópico ou clique em Criar um tópico. Essa opção configura notificações de execução do Cloud Pub/Sub para sua transferência. As notificações de execução de transferência estão em Alfa.

        Tópico do Cloud Pub/Sub

  6. Clique em Salvar.

  7. A IU da Web exibirá todos os detalhes da configuração da transferência, incluindo um nome de recurso.

    Confirmação de transferência

IU clássica

  1. Acesse a IU da Web clássica do BigQuery.

    Acessar a IU da Web clássica do BigQuery

  2. Clique em Transferências.

  3. Clique em Adicionar transferência.

  4. Na página Nova transferência:

    • Em Origem, escolha Migração: Amazon Redshift.
    • Em Nome de exibição, digite um nome para a transferência, como My Migration. Esse nome pode ter qualquer valor que identifique facilmente o processo, caso seja necessário modificá-lo no futuro.
    • Em Conjunto de dados de destino, escolha o conjunto de dados apropriado.
    • Em URL de conexão JDBC para Amazon Redshift, forneça o URL de JDBC para acessar seu cluster do Amazon Redshift.
    • Em Nome de usuário do seu banco de dados, digite o nome de usuário do banco de dados do Amazon Redshift que você gostaria de migrar.
    • Em Senha do seu banco de dados, insira a senha do banco de dados.
    • Em Código da chave de acesso e Chave de acesso secreta, insira o par de chaves de acesso que você coletou na etapa Conceder acesso ao seu intervalo do S3.
    • Em URI do Amazon S3, insira o URI do intervalo do S3 que você usará como uma área de preparo.
    • Em Esquema do Amazon Redshift, insira o esquema a partir do qual você gostaria de migrar as tabelas.
    • Em Padrões de nome da tabela, especifique um nome ou padrão que corresponda aos nomes das tabelas no esquema do banco de dados. É possível usar expressões comuns para especificar o padrão no formulário: <table1Regex>;<table2Regex>. Esse padrão precisa seguir a sintaxe da expressão típica do Java.

    Novos detalhes sobre a fonte de dados de migração do Amazon Redshift

    • (Opcional) Expanda a seção Avançado e configure as notificações de execução da transferência. As notificações de execução de transferência estão em Alfa.

      • No tópico do Cloud Pub/Sub, insira o nome do tópico, como projects/myproject/topics/mytopic.
      • Marque Enviar notificações por e-mail para permitir notificações por e-mail sobre falhas na execução da transferência.
      • Não marque Desativada ao configurar uma transferência. Para desativar transferências, consulte esta página.

      Tópico do Cloud Pub/Sub

  5. Clique em Adicionar.

  6. Se solicitado, clique em Permitir para conceder permissão de gerenciamento do processo ao serviço de transferência de dados do BigQuery. Ative os pop-ups de "bigquery.cloud.google.com" no seu navegador para visualizar a janela de permissões.

    Permitir transferência

  7. A IU da Web exibirá todos os detalhes da configuração da transferência, incluindo um nome de recurso.

    Confirmação de transferência

CLI

Digite o comando bq mk e forneça a sinalização de criação da transferência --transfer_config. As sinalizações abaixo também são obrigatórias:

  • --project_id
  • --data_source
  • --target_dataset
  • --display_name
  • --params

    bq mk --transfer_config --project_id=[PROJECT_ID] --data_source=[DATA_SOURCE] --target_dataset=[DATASET] --display_name=[NAME] --params='[PARAMETERS]'
    

Em que:

  • --project_id é o seu ID de projeto do Google Cloud Platform. Se --project_id não for especificado, será usado o projeto padrão;
  • --data_source é a fonte de dados: redshift;
  • --target_dataset é o conjunto de dados de destino do BigQuery na configuração da transferência;
  • --display_name é o nome de exibição na configuração da transferência. Esse nome pode ter qualquer valor que identifique facilmente a transferência, caso seja necessário modificá-la futuramente.
  • --params contém os parâmetros para a configuração da transferência criada no formato JSON. Por exemplo: --params='{"param":"param_value"}'. Para migrações do Amazon Redshift, é preciso fornecer os parâmetros content_owner_id e table_suffix.

Os parâmetros necessários para uma configuração de transferência do Amazon Redshift são os seguintes:

  • jdbc_url: o URL de conexão de JDBC é usado para localizar o cluster do Redshift.
  • database_username: o nome de usuário para acessar seu banco de dados para descarregar tabelas especificadas.
  • database_password: a senha usada com o nome de usuário para acessar seu banco de dados a fim de descarregar as tabelas especificadas.
  • access_key_id: o código da chave de acesso para assinar as solicitações feitas ao AWS.
  • secret_access_key: a chave de acesso secreta usada com o código da chave de acesso para assinar solicitações feitas ao AWS.
  • s3_bucket: a URI do Amazon S3 que começa com "s3://" e especifica um prefixo para os arquivos temporários a serem usados.
  • redshift_schema: o esquema do Redshift que contém todas as tabelas a serem migradas.
  • table_name_patterns: os padrões de nome de tabela separados por um ponto e vírgula (;), que são expressões regulares correspondentes às tabelas a serem migradas. Se esse valor não for fornecido, todas as tabelas no esquema do banco de dados serão migradas.

Por exemplo, o comando a seguir cria uma transferência do Amazon Redshift de nome My Transfer que tem um conjunto de dados de destino chamado mydataset e um projeto com o ID google.com:myproject.

bq mk --transfer_config --project_id=google.com:myproject --data_source=redshift --target_dataset=mydataset --display_name='My Transfer' --params='{"jdbc_url":"jdbc:postgresql://test-example-instance.sample.us-west-1.redshift.amazonaws.com:5439/dbname","database_username":"my_username","database_password":"1234567890","access_key_id":"A1B2C3D4E5F6G7H8I9J0","secret_access_key":"1234567890123456789012345678901234567890","s3_bucket":"s3://bucket/prefix","redshift_schema":"public","table_name_patterns":"table_name"}'

API

Use o método projects.locations.transferConfigs.create e forneça uma instância do recurso TransferConfig.

Cotas e limites

O BigQuery tem uma cota de carregamento de 15 TB por job, por tabela. O Amazon Redshift compacta os dados da tabela. Portanto, o tamanho da tabela exportada será maior do que o relatado pelo Amazon Redshift. Se você planeja migrar mais de 15 TB, entre em contato com bq-dts-support@google.com primeiro.

Podem ser gerados custos fora do Google usando esse serviço. Consulte a página de preços do Amazon Redshift e Amazon S3 para mais detalhes.

Devido ao modelo de consistência do Amazon S3, é possível que alguns arquivos não sejam incluídos na transferência para o BigQuery.

A seguir

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

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.