Migrar esquemas e dados do Amazon Redshift
Neste documento, descrevemos o processo de migração de dados do Amazon Redshift para o BigQuery usando endereços IP públicos.
É possível usar o serviço de transferência de dados do BigQuery para copiar seus dados de um data warehouse 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 bucket do Amazon S3. Depois, o serviço de transferência envia seus dados do bucket do Amazon S3 para o BigQuery.
Veja no diagrama a seguir o fluxo geral dos dados entre um data warehouse do Amazon Redshift e o BigQuery durante uma migração.
Se você quiser transferir dados da instância do Amazon Redshift por uma nuvem privada virtual (VPC), em endereços IP particulares, consulte Como migrar dados do Amazon Redshift com VPC.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Data Transfer Service APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Data Transfer Service APIs.
Definir as permissões necessárias
Antes de criar uma transferência do Amazon Redshift:
Verifique se o principal que cria a transferência tem as seguintes permissões no projeto onde está o job de transferência:
- Permissões
bigquery.transfers.update
para criar a transferência - Permissões
bigquery.datasets.get
ebigquery.datasets.update
no conjunto de dados de destino
O papel predefinido
roles/bigquery.admin
do Identity and Access Management (IAM) inclui as permissõesbigquery.transfers.update
,bigquery.datasets.update
ebigquery.datasets.get
. Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte o controle de acesso.- Permissões
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 aplicada a eles.
crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar os dados. Não é necessário criar tabelas.
Conceder acesso ao cluster do Amazon Redshift
Siga as instruções disponíveis em Configurar regras de entrada para clientes SQL para colocar os endereços IP a seguir na lista de permissões. Inclua 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. 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 | |||
Columbus, Ohio | us-east5 |
34.162.72.184 34.162.173.185 34.162.205.205 34.162.81.45 34.162.182.149 34.162.59.92 34.162.157.190 34.162.191.145 |
|
Dallas | us-south1 |
34.174.172.89 34.174.40.67 34.174.5.11 34.174.96.109 34.174.148.99 34.174.176.19 34.174.253.135 34.174.129.163 |
|
Iowa | us-central1 |
34.121.70.114 34.71.81.17 34.122.223.84 34.121.145.212 35.232.1.105 35.202.145.227 35.226.82.216 35.225.241.102 |
|
Las Vegas | us-west4 |
34.125.53.201 34.125.69.174 34.125.159.85 34.125.152.1 34.125.195.166 34.125.50.249 34.125.68.55 34.125.91.116 |
|
Los Angeles | us-west2 |
35.236.59.167 34.94.132.139 34.94.207.21 34.94.81.187 34.94.88.122 35.235.101.187 34.94.238.66 34.94.195.77 |
|
Montreal | northamerica-northeast1 |
34.95.20.253 35.203.31.219 34.95.22.233 34.95.27.99 35.203.12.23 35.203.39.46 35.203.116.49 35.203.104.223 |
|
Norte da Virgínia | 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 |
|
Oregon | us-west1 |
35.197.117.207 35.199.178.12 35.197.86.233 34.82.155.140 35.247.28.48 35.247.31.246 35.247.106.13 34.105.85.54 |
|
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 |
|
São Paulo | southamerica-east1 |
35.199.88.228 34.95.169.140 35.198.53.30 34.95.144.215 35.247.250.120 35.247.255.158 34.95.231.121 35.198.8.157 |
|
Santiago | southamerica-west1 |
34.176.188.48 34.176.38.192 34.176.205.134 34.176.102.161 34.176.197.198 34.176.223.236 34.176.47.188 34.176.14.80 |
|
Carolina do Sul | us-east1 |
35.196.207.183 35.237.231.98 104.196.102.222 35.231.13.201 34.75.129.215 34.75.127.9 35.229.36.137 35.237.91.139 |
|
Toronto | northamerica-northeast2 |
34.124.116.108 34.124.116.107 34.124.116.102 34.124.116.80 34.124.116.72 34.124.116.85 34.124.116.20 34.124.116.68 |
|
Europa | |||
Bélgica | europe-west1 |
35.240.36.149 35.205.171.56 34.76.234.4 35.205.38.234 34.77.237.73 35.195.107.238 35.195.52.87 34.76.102.189 |
|
Berlim | europe-west10 |
34.32.28.80 34.32.31.206 34.32.19.49 34.32.33.71 34.32.15.174 34.32.23.7 34.32.1.208 34.32.8.3 |
|
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 |
|
Frankfurt | europe-west3 |
35.246.153.144 35.198.80.78 35.246.181.106 35.246.211.135 34.89.165.108 35.198.68.187 35.242.223.6 34.89.137.180 |
|
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 |
|
Madri | europe-southwest1 |
34.175.99.115 34.175.186.237 34.175.39.130 34.175.135.49 34.175.1.49 34.175.95.94 34.175.102.118 34.175.166.114 |
|
Milão | europe-west8 |
34.154.183.149 34.154.40.104 34.154.59.51 34.154.86.2 34.154.182.20 34.154.127.144 34.154.201.251 34.154.0.104 |
|
Países Baixos | europe-west4 |
35.204.237.173 35.204.18.163 34.91.86.224 34.90.184.136 34.91.115.67 34.90.218.6 34.91.147.143 34.91.253.1 |
|
Paris | europe-west9 |
34.163.76.229 34.163.153.68 34.155.181.30 34.155.85.234 34.155.230.192 34.155.175.220 34.163.68.177 34.163.157.151 |
|
Turim | europe-west12 |
34.17.15.186 34.17.44.123 34.17.41.160 34.17.47.82 34.17.43.109 34.17.38.236 34.17.34.223 34.17.16.47 |
|
Varsóvia | europe-central2 |
34.118.72.8 34.118.45.245 34.118.69.169 34.116.244.189 34.116.170.150 34.118.97.148 34.116.148.164 34.116.168.127 |
|
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 | |||
Délhi | asia-south2 |
34.126.212.96 34.126.212.85 34.126.208.224 34.126.212.94 34.126.208.226 34.126.212.232 34.126.212.93 34.126.212.206 |
|
Hong Kong | asia-east2 |
34.92.245.180 35.241.116.105 35.220.240.216 35.220.188.244 34.92.196.78 34.92.165.209 35.220.193.228 34.96.153.178 |
|
Jacarta | asia-southeast2 |
34.101.79.105 34.101.129.32 34.101.244.197 34.101.100.180 34.101.109.205 34.101.185.189 34.101.179.27 34.101.197.251 |
|
Melbourne | australia-southeast2 |
34.126.196.95 34.126.196.106 34.126.196.126 34.126.196.96 34.126.196.112 34.126.196.99 34.126.196.76 34.126.196.68 |
|
Mumbai | asia-south1 |
34.93.67.112 35.244.0.1 35.200.245.13 35.200.203.161 34.93.209.130 34.93.120.224 35.244.10.12 35.200.186.100 |
|
Osaka | asia-northeast2 |
34.97.94.51 34.97.118.176 34.97.63.76 34.97.159.156 34.97.113.218 34.97.4.108 34.97.119.140 34.97.30.191 |
|
Seul | asia-northeast3 |
34.64.152.215 34.64.140.241 34.64.133.199 34.64.174.192 34.64.145.219 34.64.136.56 34.64.247.158 34.64.135.220 |
|
Singapura | 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 |
|
Taiwan | asia-east1 |
35.221.201.20 35.194.177.253 34.80.17.79 34.80.178.20 34.80.174.198 35.201.132.11 35.201.223.177 35.229.251.28 35.185.155.147 35.194.232.172 |
|
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 |
|
Oriente Médio | |||
Dammam | me-central2 |
34.166.20.177 34.166.10.104 34.166.21.128 34.166.19.184 34.166.20.83 34.166.18.138 34.166.18.48 34.166.23.171 |
|
Doha | me-central1 |
34.18.48.121 34.18.25.208 34.18.38.183 34.18.33.25 34.18.21.203 34.18.21.80 34.18.36.126 34.18.23.252 |
|
Tel Aviv | me-west1 |
34.165.184.115 34.165.110.74 34.165.174.16 34.165.28.235 34.165.170.172 34.165.187.98 34.165.85.64 34.165.245.97 |
|
África | |||
Johannesburgo | africa-south1 |
34.35.11.24 34.35.10.66 34.35.8.32 34.35.3.248 34.35.2.113 34.35.5.61 34.35.7.53 34.35.3.17 |
Locais multirregionais
Descrição multirregional | Nome multirregional | Endereços IP |
---|---|---|
Data centers dentro de estados membro da União Europeia1 | 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 europe-west2
(Londres) ou europe-west6
(Zurique).
Conceder acesso ao bucket do Amazon S3
É necessário ter um bucket do Amazon S3 para usar como área de teste para transferir os dados do Amazon Redshift para o BigQuery. Para instruções detalhadas, consulte a documentação da Amazon.
Recomendamos que você crie um usuário do IAM dedicado à Amazon e conceda a ele acesso somente leitura ao Amazon Redshift e acesso para leitura e gravação ao Amazon S3. Para concluir essa etapa, aplique as políticas a seguir:
Crie um par de chaves de acesso do usuário do IAM para o Amazon.
Configurar controle de carga de trabalho com uma fila de migração separada
Opcionalmente, é possível definir uma fila do Amazon Redshift para a migração de forma a limitar e separar os recursos usados no processo. É possível configurar essa fila de migração 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 o processo de transferência de dados para o BigQuery. O serviço de transferência tem acesso apenas à fila de migração.
Coletar informações de transferência
Reúna as informações necessárias para configurar a migração com o serviço de transferência de dados do BigQuery:
- Siga estas instruções para encontrar o URL de JDBC.
- Encontre o nome e a senha de um usuário com as permissões adequadas para seu banco de dados do Amazon Redshift.
- Siga as instruções em Conceder acesso ao bucket do Amazon S3 para receber um par de chaves de acesso da AWS.
- Encontre o URI do bucket do Amazon S3 que você quer usar para a transferência. Recomendamos que você configure uma política de Lifecycle para esse bucket, evitando cobranças desnecessárias. O prazo de validade recomendado é de 24 horas, para que haja tempo suficiente para transferir todos os dados para o BigQuery.
Avaliar os dados
Como parte da transferência de dados, o serviço de transferência de dados do BigQuery grava dados do Amazon Redshift no Cloud Storage como arquivos CSV. Se esses arquivos contiverem o caractere ASCII 0, não poderão ser carregados no BigQuery. Sugerimos que você avalie seus dados para determinar se isso pode ser um problema para você. Se for o caso, é possível contornar isso exportando os dados para o Amazon S3 como arquivos Parquet e, em seguida, importando esses arquivos usando o serviço de transferência de dados do BigQuery. Para mais informações, consulte Visão geral das transferências do Amazon S3.
Configurar uma transferência do Amazon Redshift
Selecione uma das seguintes opções:
Console
No Console do Google Cloud, acesse a página BigQuery.
Clique em Transferências de dados.
Clique em Criar transferência.
Na seção Tipo de origem, selecione Migração: Amazon Redshift na lista Origem.
Na seção Nome da configuração de transferência, insira um nome para a transferência, como
My migration
, no campo Nome de exibição. Esse nome pode ter qualquer valor que identifique facilmente a transferência, caso seja necessário modificá-la no futuro.Na seção Configurações de destino, escolha o conjunto de dados criado, na lista Conjunto de dados.
Na seção Detalhes da fonte de dados, faça o seguinte:
- Em URL de conexão de JDBC para Amazon Redshift, forneça o URL de 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 respectiva senha.
Em ID da chave de acesso e Chave de acesso do secret, insira o par de chaves de acesso obtido em Conceder acesso ao bucket do S3.
Em URI do Amazon S3, insira o URI do bucket do S3 que será utilizada 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 de expressão típica de Java. Exemplo:lineitem;ordertb
corresponde às tabelas chamadaslineitem
eordertb
..*
corresponde a todas as tabelas.
Deixe esse campo vazio para migrar todas as tabelas do esquema especificado.
Em VPC e intervalo de IP reservado, deixe o campo em branco.
No menu Conta de serviço, selecione uma conta de serviço nas contas de serviço associadas ao seu projeto do Google Cloud. É possível associar uma conta de serviço à transferência em vez de usar suas credenciais de usuário. Para mais informações sobre o uso de contas de serviço com transferências de dados, consulte Usar contas de serviço.
- Se você fez login com uma identidade federada, é necessário uma conta de serviço para criar uma transferência. Se você fez login com uma Conta do Google, uma conta de serviço para a transferência é opcional.
- A conta de serviço precisa ter as permissões necessárias.
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 falhar.
- 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 da sua transferência.
Clique em Salvar.
O Console do Google Cloud exibe todos os detalhes de configuração da transferência, incluindo um Nome de recurso para ela.
bq
Digite o comando bq mk
e forneça a sinalização de criação da transferência --transfer_config
. As sinalizações a seguir 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 \ --service_account_name=service_account \ --params='parameters'
Em que:
- project_id é o ID do projeto no Google Cloud. Se
--project_id
não for especificado, o projeto padrão será usado. - data_source é a fonte de dados:
redshift
. - dataset é o conjunto de dados de destino do BigQuery para a configuração da transferência.
- name é o nome de exibição da configuração de transferência. O nome da transferência pode ser qualquer valor que permita identificá-la facilmente, caso precise modificá-la mais tarde.
- service_account: é o nome da conta de serviço usado para
autenticar a transferência. A conta de serviço precisa pertencer ao mesmo
project_id
usado para criar a transferência e ter todas as permissões necessárias. - parameters contém os parâmetros da 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 o 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 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
.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Cotas e limites
O BigQuery tem uma cota de carregamento de 15 TB para cada job de carregamento de cada tabela. Internamente, o Amazon Redshift compacta os dados da tabela. Portanto, o tamanho da tabela exportada será maior do que o informado pelo Amazon Redshift. Se estiver planejando migrar uma tabela com mais de 15 TB, entre em contato com o Cloud Customer Care primeiro.
Usar esse serviço pode gerar custos não previstos pelo Google. 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
- Saiba Como migrar instâncias privadas do Amazon Redshift com VPC.
- Saiba mais sobre o serviço de transferência de dados do BigQuery.
- Migrar o código SQL com a translação de SQL em lote.