A migração de um data warehouse do Amazon Redshift para o AnalyticDB for PostgreSQL envolve conversão de DDL, exportação de dados, transferência entre nuvens e importação de dados. A ferramenta adbpg-redshift-migration.jar automatiza essas etapas ao gerenciar a conversão de DDL e a movimentação de dados, permitindo concluir a migração sem scripts manuais.
A migração consiste em quatro etapas:
Exporte e converta instruções DDL do Redshift para o formato do AnalyticDB for PostgreSQL.
Carregue dados de tabelas do Redshift para o Amazon S3.
Transfira dados do Amazon S3 para o Object Storage Service (OSS).
Importe dados do OSS para o AnalyticDB for PostgreSQL.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster do Amazon Redshift
Amazon S3 ativado e uma função temporária do Identity and Access Management (IAM) criada para o serviço
Permissões do Amazon S3 e do Amazon Redshift concedidas à função IAM
-
A seguinte configuração de relação de confiança adicionada à função IAM (entra em vigor em aproximadamente 10 minutos):
{ "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } A função IAM associada ao seu cluster do Amazon Redshift
Uma instância do AnalyticDB for PostgreSQL e um bucket do OSS criados na mesma região
Dimensionar a instância do AnalyticDB for PostgreSQL
Mapeie as especificações do cluster do Redshift para as especificações de nó do AnalyticDB for PostgreSQL antes de criar a instância.
Um cluster do Amazon Redshift consiste em um nó líder e vários nós de computação. Cada nó de computação é particionado em fatias de nó. Cada fatia de nó corresponde a um nó de computação no AnalyticDB for PostgreSQL.
Exemplo: Um cluster do Redshift com 4 nós de computação, cada um com 2 fatias de nó (2 núcleos, 16 GB de memória, 1 TB de armazenamento por fatia), corresponde a uma instância do AnalyticDB for PostgreSQL com:
Nós de computação: 8 (4 nós x 2 fatias)
Especificações do nó: 2 núcleos, 16 GB de memória
Armazenamento por nó único: 1.000 GB
Defina o tipo de armazenamento como Enhanced SSD (ESSD) para obter melhor desempenho de I/O. Para obter instruções sobre como crie uma instância, consulte Crie uma instância .
Procedimento
Etapa 1: Exportar e converter instruções DDL
Baixe a ferramenta adbpg-redshift-migration.jar e execute o comando a seguir para exportar instruções DDL do Redshift e convertê-las para o formato do AnalyticDB for PostgreSQL.
Antes de executar este comando, configure regras de grupo de segurança para a VPC onde o cluster do Redshift reside, de modo que o endereço IP da ferramenta de migração possa acessar a porta de serviço do Redshift.
java -jar adbpg-redshift-migration.jar -d redshift -h r-red.cjbgr.cn-north-1.redshift.amazonaws.com.cn -p 5439 -U awsuser -w Lrz**** --transform
Substitua os valores dos parâmetros pelos seus valores reais.
|
Parâmetro |
Descrição |
|
|
Tipo de banco de dados. Defina como |
|
|
Endpoint do cluster do Redshift. Obtenha essa informação na URL JDBC no console do Redshift. Por exemplo, se a URL JDBC for |
|
|
Número da porta. Defina como |
|
|
Nome do superusuário do cluster do Redshift. Geralmente é |
|
|
Senha do superusuário do Redshift. |
|
|
Executa tanto o baixe quanto a conversão do DDL. O DDL baixado é salvo em |
Após crie um banco de dados, um schema e um usuário na instância do AnalyticDB for PostgreSQL para armazenar os dados do Amazon Redshift, revise o arquivo ddl_transform_{timestamp}.txt e verifique se as instruções DDL convertidas são compatíveis com o AnalyticDB for PostgreSQL. Em caso afirmativo, execute as instruções DDL para crie os schemas de tabela correspondentes.
Etapa 2: Carregar dados do Redshift para o Amazon S3
Execute o comando a seguir para exportar dados de tabelas do Redshift e carregá-los no Amazon S3. Após a conclusão do upload, dois arquivos de resultado são gerados: succeed_transfer_tables_{timestamp}.txt (tabelas carregadas com sucesso) e failed_transfer_tables_{timestamp}.txt (tabelas com falha).
java -jar adbpg-redshift-migration.jar -d redshift -h host-info -p 5432 -U dbuser -w Lrz**** -o s3 -b dbuser-bj --iam-account account-info --iam-role role-info --root-dir rootdir --format parquet --use-iam --china-region --jobs 8 -f tablelist.txt --upload
Substitua os valores dos parâmetros pelos seus valores reais.
|
Parâmetro |
Descrição |
|
|
Armazenamento em nuvem de destino. Defina como |
|
|
Nome do bucket do Amazon S3. |
|
|
ID da conta da função IAM. Trata-se de um número de 12 dígitos do Amazon Resource Name (ARN) da função IAM. Por exemplo, |
|
|
Nome da função IAM. Por exemplo, |
|
|
Diretório raiz no Amazon S3. |
|
|
Formato de exportação de dados: |
|
|
Utiliza a função IAM para autenticação durante o upload. |
|
|
(Opcional) Especifique este parâmetro apenas ao carregar dados de regiões na China continental. |
|
|
Número de tarefas de upload paralelas. |
|
|
Arquivo contendo os nomes das tabelas a serem carregadas. Cada linha deve conter um nome de tabela no formato |
|
|
Aciona a operação de upload. |
Etapa 3: Transferir dados do Amazon S3 para o OSS
Utilize o Alibaba Cloud Data Online Migration para transferir os dados do Amazon S3 para o OSS.
Etapa 4: Importar dados do OSS para o AnalyticDB for PostgreSQL
Antes de executar este comando, envie um ticket para solicitar permissões de superusuário na sua instância do AnalyticDB for PostgreSQL.
Execute o comando a seguir para importar os dados do OSS para o AnalyticDB for PostgreSQL. Use o arquivo succeed_transfer_tables_{timestamp}.txt gerado na Etapa 2 como source para o parâmetro -f.
java -jar adbpg-redshift-migration.jar -d adbpg -h gp-2ze312*******o-master.gpdb.rds.aliyuncs.com -p 5432 -U dbuser -w Lrz**** -o oss -e oss-cn-beijing-internal.aliyuncs.com -i "LTAI5tP*******rCrdj" -k "4k3ntmvK*******M2mqjQcuOy" -b dbuser-bj --root-dir rootdir --format parquet --jobs 8 -f tablelist.txt --download
Substitua os valores dos parâmetros pelos seus valores reais.
|
Parâmetro |
Descrição |
|
|
Tipo de banco de dados. Defina como |
|
|
Endpoint da instância do AnalyticDB for PostgreSQL. Obtenha o endpoint público no console do AnalyticDB for PostgreSQL. |
|
|
Número da porta. Defina como |
|
|
Nome da conta inicial da instância do AnalyticDB for PostgreSQL. |
|
|
Senha da conta inicial. |
|
|
Armazenamento em nuvem de source. Defina como |
|
|
Endpoint do bucket do OSS. |
|
|
AccessKey ID usado para acessar o OSS. |
|
|
AccessKey secret usado para acessar o OSS. |
|
|
Nome do bucket do OSS. |
|
|
Diretório raiz do OSS. |
|
|
Formato de dados a importar. Use o mesmo formato especificado na Etapa 2 (padrão: |
|
|
Número de tarefas de importação paralelas. |
|
|
Arquivo contendo os nomes das tabelas a importar. Cada linha deve conter um nome de tabela no formato |
|
|
(Opcional) Arquivo contendo os nomes correspondentes das tabelas do AnalyticDB for PostgreSQL. Necessário apenas se os nomes das tabelas diferirem dos nomes no Redshift. Cada linha deve conter um nome de tabela no formato |
|
|
Aciona a operação de baixe (importação). |
Próximas etapas
Para migração manual sem a ferramenta automatizada, consulte Migrar manualmente dados de um cluster do Amazon Redshift para uma instância do AnalyticDB for PostgreSQL.