Como migrar dados do Amazon Redshift

Visão geral

Neste documento, descrevemos o processo de migração de dados do Amazon Redshift para o BigQuery por meio de IPs públicos.

Se você quiser transferir dados da instância do Redshift por meio de uma nuvem privada virtual (VPC), em endereços IP particulares, consulte Como migrar dados do Amazon Redshift com VPC.

Com o serviço de transferência de dados do BigQuery, é possível copiar seus dados de um armazenamento do Amazon Redshift para o BigQuery. Esse serviço usa agentes de migração no GKE e aciona uma operação de descarregamento do Amazon Redshift para uma área de preparo em um intervalo do Amazon S3. Depois, o serviço de transferência de dados do BigQuery envia seus dados do intervalo do Amazon S3 para o BigQuery.

Veja no diagrama a seguir 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 o processo passo a passo de configuração de uma migração de dados do Amazon Redshift para o BigQuery. Essas etapas são:

  • Requisitos do GCP: atenda aos pré-requisitos e defina permissões no Google Cloud.
  • Conceder acesso ao cluster do Amazon Redshift.
  • Conceda acesso ao intervalo do Amazon S3 que você usará para preparar os dados temporariamente. Anote o par de chaves de acesso para usar em uma etapa posterior.
  • Configurar a migração com o serviço de transferência de dados do BigQuery. Você precisará do seguinte:
    • 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 da AWS, que você aprenderá a coletar na etapa Conceder acesso ao bucket do S3.
    • O URI do bucket do Amazon S3. Recomendamos que você configure uma política de Ciclo de vida para esse intervalo para evitar cobranças desnecessárias. O prazo de validade recomendado é de 24 horas para que haja tempo suficiente para transferir todos os dados ao BigQuery.

Permissões exigidas

Antes de criar uma transferência do Amazon Redshift:

  1. Certifique-se de que a pessoa que está criando a transferência tenha as seguintes permissões obrigatórias no BigQuery:

    • Permissões bigquery.transfers.update para criar a transferência
    • Permissões bigquery.datasets.update no conjunto de dados de destino

    O papel predefinido bigquery.admin do Cloud IAM inclui as permissões bigquery.transfers.update e bigquery.datasets.update. Para mais informações sobre os papéis do Cloud IAM no serviço de transferência de dados do BigQuery, consulte a Referência do controle de acesso.

  2. Consulte a documentação do Amazon S3 para garantir que você tenha configurado as permissões necessárias para ativar a transferência. No mínimo, os dados de origem do Amazon S3 precisam ter a política AmazonS3ReadOnlyAccess (em inglês) gerenciada pela AWS.

Requisitos do Google Cloud

Para realizar uma migração do armazenamento de dados do Amazon Redshift, verifique se você atende aos pré-requisitos a seguir no Google Cloud.

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

    • No Console do Cloud, acesse a página de seletor de projetos.

      Acessar a página do seletor de projetos

    • Selecione ou crie um projeto do Cloud.

  2. Ative a API do serviço de transferência de dados do BigQuery.

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

    Ativar API

    O BigQuery é ativado automaticamente nos novos projetos. No entanto, talvez seja necessário ativar a API BigQuery para os projetos atuais. Uma marca de seleção verde indica que ela já está ativada.

    API ativada

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

  4. Permita os pop-ups de 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 a permissão do BigQuery Data Transfer Service para gerenciar a transferência.

Conceder acesso ao cluster do Amazon Redshift

Siga as instruções da Amazon para colocar na lista de permissões os endereços IP a seguir. Você pode colocar na lista de permissões os endereços IP que correspondem à localização do seu conjunto de dados ou pode colocar na lista de permissões todos os endereços IP da tabela abaixo. Esses endereços IP de propriedade do Google são reservados para migrações de dados do Amazon Redshift.

Locais regionais

Descrição da região Nome da região Endereços IP
América
Virgínia do Norte us-east4 35.245.95.250
35.245.126.228
35.236.225.172
35.245.86.140
35.199.31.35
35.199.19.115
35.230.167.48
35.245.128.132
35.245.111.126
35.236.209.21
Salt Lake City us-west3 34.106.37.58
34.106.85.113
34.106.28.153
34.106.64.121
34.106.246.131
34.106.56.150
34.106.41.31
34.106.182.92
Europa
Finlândia europe-north1 35.228.35.94
35.228.183.156
35.228.211.18
35.228.146.84
35.228.103.114
35.228.53.184
35.228.203.85
35.228.183.138
Londres europe-west2 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
Zurique europe-west6 34.65.205.160
34.65.121.140
34.65.196.143
34.65.9.133
34.65.156.193
34.65.216.124
34.65.233.83
34.65.168.250
Ásia-Pacífico
Polônia asia-southeast1 34.87.12.235
34.87.63.5
34.87.91.51
35.198.197.191
35.240.253.175
35.247.165.193
35.247.181.82
35.247.189.103
Sydney australia-southeast1 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
Tóquio asia-northeast1 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

Locais multirregionais

Descrição multirregional Nome multirregional Endereços IP
Data centers nos estados membros da União Europeia 1 EU 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
Data centers nos Estados Unidos US 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

1 Os dados localizados na multirregião EU não são armazenados nos data centers em europe-west2 (Londres) ou europe-west6 (Zurique).

Conceder acesso ao intervalo do Amazon S3

Você precisa de um intervalo do S3 para usar como área de preparo e transferir os dados do Amazon Redshift para o BigQuery. Veja instruções detalhadas da Amazon aqui.

  1. Recomendamos que você crie um usuário do IAM dedicado do Amazon e conceda a ele acesso somente leitura ao Redshift e acesso de leitura e gravação ao S3. Aplique as políticas atuais a seguir para fazer isso:

    Permissões de migração do Amazon Redshift

  2. Crie um par de chaves de acesso do usuário do 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 para limitar e separar os recursos usados no processo. Essa fila pode ser configurada com uma contagem máxima de consultas de simultaneidade. Em seguida, é possível associar um determinado grupo de usuários de migração à fila e usar essas credenciais ao configurar a migração para transferir os dados para o BigQuery. O serviço de transferência só terá acesso à fila de migração.

Como configurar uma transferência do Amazon Redshift

Configurar uma transferência do Amazon Redshift:

Console

  1. Acesse a IU da Web do BigQuery no Console do Cloud.

    Acessar o Console do Cloud

  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 Display Name, insira um nome para a transferência, como My migration. Esse nome pode ser qualquer valor de fácil identificação. Ele será necessário, caso precise ser modificado mais tarde.
    • Em Destination dataset, escolha o conjunto 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 do JDBC para Amazon Redshift, forneça o URL do JDBC para acessar o 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ê quer migrar.
    • Em Senha do seu banco de dados, insira a senha do banco de dados.
    • Em ID da chave de acesso e Chave de acesso secreta, insira o par de chaves de acesso coletado em Conceder acesso ao intervalo do S3.
    • Em URI do Amazon S3, insira o URI do intervalo do S3 que você usará como á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. Use expressões regulares para especificar o padrão no formato: <table1Regex>;<table2Regex>. Esse padrão precisa seguir a sintaxe da expressão regular do Java.

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

    • Opcional: na seção Opções de notificação:

      • 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 quando uma execução de transferência falha.
      • Em Selecionar um tópico do Pub/Sub, escolha o nome do tópico ou clique em Criar um tópico. Essa opção configura notificações de execução do Pub/Sub para sua transferência.

        Tópico do Pub/Sub

  6. Clique em Save.

  7. O Console do Cloud exibirá todos os detalhes da configuração de transferência, incluindo um Nome de recurso dela.

    Confirmação da transferência

IU clássica

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

    Acessar a IU clássica da Web do BigQuery

  2. Clique em Transfers.

  3. Clique em Adicionar transferência.

  4. Na página Nova transferência:

    • Em Origem, escolha Migração: Amazon Redshift.
    • Em Display Name, insira um nome para a transferência, como My Migration. Esse nome pode ser qualquer valor de fácil identificação. Ele será necessário, caso precise ser modificado mais tarde.
    • Em Destination dataset, escolha o conjunto apropriado.
    • Em URL de conexão do JDBC para Amazon Redshift, forneça o URL do JDBC para acessar o 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 ID da chave de acesso e Chave de acesso secreta, insira o par de chaves de acesso coletado em Conceder acesso ao intervalo do S3.
    • Em URI do Amazon S3, insira o URI do intervalo do S3 que você usará como área de preparo.
    • Em Esquema do Amazon Redshift, insira o esquema 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. Use expressões regulares para especificar o padrão no formato: <table1Regex>;<table2Regex>. Esse padrão precisa seguir a sintaxe da expressão regular do Java.

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

    • (Opcional) Expanda a seção Advanced e configure as notificações de execução para a transferência.

      • Em Tópico do Pub/Sub, insira o nome do seu tópico. Por exemplo: 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. Consulte Como trabalhar com transferências para desativar as transferências atuais.

      Tópico do Pub/Sub

  5. Clique em Add.

  6. Se solicitado, clique em Permitir para conceder ao serviço de transferência de dados do BigQuery a permissão para gerenciar a transferência. É necessário permitir pop-ups do endereço bigquery.cloud.google.com no navegador para ver 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 dela.

    Confirmação da transferência

CLI

Insira 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 ID do seu projeto do Google Cloud. Se --project_id não for especificado, o projeto padrão será usado;
  • data_source é a origem de dados: redshift.
  • dataset é o conjunto de dados de destino do BigQuery para a configuração de transferência;
  • name é o nome de exibição da configuração da transferência. Ele pode ter qualquer valor que identifique facilmente a transferência, caso seja necessário modificá-la no futuro;
  • parameters contém os parâmetros para a configuração da transferência criada no formato JSON. Por exemplo, --params='{"param":"param_value"}'.

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

  • jdbc_url: o URL de conexão do JDBC é usado para localizar o cluster do Amazon Redshift.
  • database_username: o nome de usuário para acessar seu banco de dados e descarregar tabelas especificadas.
  • database_password: a senha usada com o nome de usuário para acessar seu banco de dados e descarregar tabelas especificadas.
  • access_key_id: o ID da chave de acesso para assinar as solicitações feitas para a AWS;
  • secret_access_key: a chave de acesso secreta usada com o ID da chave de acesso para assinar as solicitações feitas para a AWS.
  • s3_bucket: o URI do Amazon S3 que começa com "s3://" e especifica um prefixo de arquivos temporários a serem usados.
  • redshift_schema: o esquema do Amazon 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, com o comando a seguir, você cria uma transferência do Amazon Redshift chamada My Transfer com um conjunto de dados de destino mydataset e um projeto com o ID google.com:myproject.

bq mk \
    --transfer_config \
    --project_id=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. Internamente, 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 primeiro com bq-dts-support@google.com.

Podem ser gerados custos fora do Google usando esse serviço. Consulte as páginas de preços do Amazon Redshift e do 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