La migración de un almacén de datos de Amazon Redshift a AnalyticDB for PostgreSQL implica la conversión de DDL, la exportación de datos, la transferencia entre nubes y la importación de datos. La herramienta adbpg-redshift-migration.jar automatiza estos pasos al gestionar la conversión de DDL y el movimiento de datos, lo que permite completar la migración sin necesidad de escribir scripts manuales.
La migración consta de cuatro pasos:
Exportar y convertir las sentencias DDL de Redshift al formato de AnalyticDB for PostgreSQL.
Cargar los datos de las tablas de Redshift a Amazon S3.
Transferir los datos de Amazon S3 a Object Storage Service (OSS).
Importar los datos de OSS a AnalyticDB for PostgreSQL.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un clúster de Amazon Redshift
Amazon S3 activado y un rol temporal de Identity and Access Management (IAM) creado para el servicio
Permisos de Amazon S3 y Amazon Redshift otorgados al rol de IAM
-
La siguiente configuración de relación de confianza agregada al rol de IAM (surte efecto en aproximadamente 10 minutos):
{ "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } El rol de IAM asociado a su clúster de Amazon Redshift
Una instancia de AnalyticDB for PostgreSQL y un OSS bucket creados en la misma región
Dimensionar la instancia de AnalyticDB for PostgreSQL
Asigne las especificaciones de su clúster de Redshift a las especificaciones de nodo de AnalyticDB for PostgreSQL antes de crear la instancia.
Un clúster de Amazon Redshift se compone de un nodo líder y varios nodos de cómputo. Cada nodo de cómputo se divide en segmentos de nodo. Cada segmento de nodo corresponde a un nodo de cómputo en AnalyticDB for PostgreSQL.
Ejemplo: Un clúster de Redshift con 4 nodos de cómputo, cada uno con 2 segmentos de nodo (2 núcleos, 16 GB de memoria, 1 TB de almacenamiento por segmento), corresponde a una instancia de AnalyticDB for PostgreSQL con:
Nodos de cómputo: 8 (4 nodos x 2 segmentos)
Especificaciones de nodo: 2 núcleos, 16 GB de memoria
Almacenamiento por nodo individual: 1,000 GB
Establezca el tipo de almacenamiento en Enhanced SSD (ESSD) para obtener un mejor rendimiento de E/S. Para obtener instrucciones sobre cómo crear una instancia, consulte Crear una instancia .
Procedimiento
Paso 1: Exportar y convertir sentencias DDL
Descargue la herramienta adbpg-redshift-migration.jar y ejecute el siguiente comando para exportar las sentencias DDL de Redshift y convertirlas al formato de AnalyticDB for PostgreSQL.
Antes de ejecutar este comando, configure las reglas del security group de la virtual private cloud (VPC) donde reside el clúster de Redshift para que la dirección IP de la herramienta de migración pueda alcanzar el puerto del servicio de 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
Reemplace los valores de los parámetros por sus valores reales.
|
Parámetro |
Descripción |
|
|
Tipo de base de datos. Establézcalo en |
|
|
Endpoint del clúster de Redshift. Obténgalo de la URL JDBC en la consola de Redshift. Por ejemplo, si la URL JDBC es |
|
|
Número de puerto. Establézcalo en |
|
|
Nombre del superusuario del clúster de Redshift. Por lo general es |
|
|
Contraseña del superusuario de Redshift. |
|
|
Realiza tanto la descarga como la conversión de DDL. El DDL descargado se guarda en |
Después de crear una base de datos, un esquema y un usuario en la instancia de AnalyticDB for PostgreSQL para almacenar los datos de Amazon Redshift, revise ddl_transform_{timestamp}.txt y compruebe que los DDL statements convertidos sean compatibles con AnalyticDB for PostgreSQL. De ser así, ejecute las sentencias DDL para crear los esquemas de tabla correspondientes.
Paso 2: Cargar datos de Redshift a Amazon S3
Ejecute el siguiente comando para exportar los datos de las tablas de Redshift y cargarlos en Amazon S3. Una vez completada la carga, se generan dos archivos de resultados: succeed_transfer_tables_{timestamp}.txt (tablas cargadas correctamente) y failed_transfer_tables_{timestamp}.txt (tablas con errores).
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
Reemplace los valores de los parámetros por sus valores reales.
|
Parámetro |
Descripción |
|
|
Almacenamiento en la nube de destino. Establézcalo en |
|
|
Nombre del bucket de Amazon S3. |
|
|
ID de cuenta del rol de IAM. Es un número de 12 dígitos del Amazon Resource Name (ARN) del rol de IAM. Por ejemplo, |
|
|
Nombre del rol de IAM. Por ejemplo, |
|
|
Directorio raíz en Amazon S3. |
|
|
Formato de exportación de datos: |
|
|
Utiliza el rol de IAM para la autenticación durante la carga. |
|
|
(Opcional) Especifique este parámetro solo cuando cargue datos desde regiones de China continental. |
|
|
Número de trabajos de carga en paralelo. |
|
|
Archivo que contiene los nombres de las tablas a cargar. Cada línea debe contener un nombre de tabla en formato |
|
|
Activa la operación de carga. |
Paso 3: Transferir datos de Amazon S3 a OSS
Utilice Alibaba Cloud Data Online Migration para transfer the data from Amazon S3 to OSS.
Paso 4: Importar datos de OSS a AnalyticDB for PostgreSQL
Antes de ejecutar este comando, envíe un ticket para solicitar permisos de superusuario en su instancia de AnalyticDB for PostgreSQL.
Ejecute el siguiente comando para importar los datos de OSS a AnalyticDB for PostgreSQL. Utilice el archivo succeed_transfer_tables_{timestamp}.txt generado en el Paso 2 como entrada para el 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
Reemplace los valores de los parámetros por sus valores reales.
|
Parámetro |
Descripción |
|
|
Tipo de base de datos. Establézcalo en |
|
|
Endpoint de la instancia de AnalyticDB for PostgreSQL. Obtenga el public endpoint desde la consola de AnalyticDB for PostgreSQL. |
|
|
Número de puerto. Establézcalo en |
|
|
Nombre del initial account de la instancia de AnalyticDB for PostgreSQL. |
|
|
Contraseña de la cuenta inicial. |
|
|
Almacenamiento en la nube de origen. Establézcalo en |
|
|
Endpoint del bucket de OSS. |
|
|
AccessKey ID utilizado para acceder a OSS. |
|
|
AccessKey secret utilizado para acceder a OSS. |
|
|
Nombre del bucket de OSS. |
|
|
Directorio raíz de OSS. |
|
|
Formato de datos a importar. Utilice el mismo formato especificado en el Paso 2 (predeterminado: |
|
|
Número de trabajos de importación en paralelo. |
|
|
Archivo que contiene los nombres de las tablas a importar. Cada línea debe contener un nombre de tabla en formato |
|
|
(Opcional) Archivo que contiene los nombres correspondientes de las tablas de AnalyticDB for PostgreSQL. Solo es necesario si los nombres de las tablas difieren de los de Redshift. Cada línea debe contener un nombre de tabla en formato |
|
|
Activa la operación de descarga (importación). |
Siguientes pasos
Para realizar una migración manual sin la herramienta automatizada, consulte Manually migrate data from an Amazon Redshift cluster to an AnalyticDB for PostgreSQL instance.