Uso de una base de datos de Amazon Redshift como destino para AWS Database Migration Service - AWS Database Migration Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de una base de datos de Amazon Redshift como destino para AWS Database Migration Service

Puede migrar datos a bases de datos de Amazon Redshift mediante AWS Database Migration Service. Amazon Redshift es un servicio de almacenamiento de datos administrado a escala de petabytes en la nube . Con una base de datos de Amazon Redshift como destino, puede migrar datos desde todas las demás bases de datos de origen compatibles.

Puede utilizar Amazon Redshift sin servidor como destino para AWS DMS. Para obtener más información, consulte Uso de AWS DMS con Amazon Redshift sin servidor como objetivo a continuación.

El clúster de Amazon Redshift debe estar en la misma cuenta de AWS y región de AWS que la instancia de replicación.

Durante una migración de base de datos a Amazon Redshift, AWS DMS primero traslada los datos a un bucket de Amazon S3. Cuando los archivos se encuentran en un bucket de Amazon S3, AWS DMS los transfiere a las tablas adecuadas del almacenamiento de datos de Amazon Redshift. AWS DMS crea el bucket de S3 en la misma región de AWS que la de la base de datos de Amazon Redshift. La instancia de replicación de AWS DMS debe estar en la misma región de AWS.

Si utiliza la AWS CLI o la API de DMS para migrar datos a Amazon Redshift, configure un rol de AWS Identity and Access Management (IAM) para permitir el acceso de S3. Para obtener más información sobre la creación de este rol de IAM, consulte Crear las funciones de IAM para usarlas con la API AWS CLI y AWS DMS.

El punto de conexión de Amazon Redshift ofrece la total automatización de lo siguiente:

  • Generación de esquemas y mapeo de tipos de datos

  • Carga completa de las tablas de la base de datos de origen

  • Carga gradual de los cambios realizados en las tablas de origen

  • Aplicación de los cambios de esquema en lenguaje de definición de datos (DDL) realizados en la tablas de origen

  • Sincronización entre los procesos de carga completa y captura de datos de cambios (CDC)

AWS Database Migration Service es compatible con las operaciones de carga completa y procesamiento de cambios. AWS DMS lee los datos de la base de datos de origen y crea una serie de archivos de valores separados por comas (.csv). Para las operaciones de carga completa, AWS DMS crea archivos para cada tabla. A continuación, AWS DMS copia los archivos de cada tabla en una carpeta independiente en Amazon S3. Cuando los archivos se cargan en Amazon S3, AWS DMS envía un comando de copia y los datos de los archivos se copian en Amazon Redshift. Para las operaciones de procesamiento de cambios, AWS DMS copia los cambios netos en los archivos .csv. AWS DMS, a continuación, carga los archivos de cambios netos en Amazon S3 y copia los datos en Amazon Redshift.

Para obtener más información sobre cómo trabajar con Amazon Redshift como destino para AWS DMS, consulte las secciones siguientes:

Requisitos previos para el uso de una base de datos de Amazon Redshift como destino para AWS Database Migration Service

En la siguiente lista se describen los requisitos previos necesarios para trabajar con Amazon Redshift como destino de la migración de datos:

  • Utilice la consola de administración de AWS para lanzar un clúster de Amazon Redshift. Tenga en cuenta la información básica acerca de la cuenta de AWS y el clúster de Amazon Redshift, como la contraseña, el nombre de usuario y el nombre de la base de datos. Necesita estos valores al crear el punto de conexión de destino de Amazon Redshift.

  • El clúster de Amazon Redshift debe estar en la misma cuenta de AWS y región de AWS que la instancia de replicación.

  • La instancia de replicación de AWS DMS necesita conectividad de red al punto de conexión de Amazon Redshift (nombre de host y puerto) que utiliza el clúster.

  • AWS DMS utiliza un bucket de Amazon S3 para transferir datos a la base de datos de Amazon Redshift. Para que AWS DMS cree el bucket, la consola utiliza un rol de IAM, dms-access-for-endpoint. Si utiliza la AWS CLI o la API de DMS para crear una migración de base de datos con Amazon Redshift como la base de datos de destino, debe crear este rol de IAM. Para obtener más información sobre la creación de este rol, consulte Crear las funciones de IAM para usarlas con la API AWS CLI y AWS DMS.

  • AWS DMS convierte BLOB, CLOB y NCLOB a un VARCHAR en la instancia de Amazon Redshift de destino. Amazon Redshift no admite tipos de datos VARCHAR de más de 64 KB, por lo que no puede almacenar LOB tradicionales en Amazon Redshift.

  • Establezca la configuración de la tarea de metadatos de destino BatchApplyEnabled en true para AWS DMS para gestionar los cambios en las tablas de destino de Amazon Redshift durante el CDC. Se requiere una clave principal tanto en la tabla de origen como en la tabla de destino. Sin una clave principal, los cambios se aplican instrucción por instrucción. Y eso puede afectar negativamente el rendimiento de la tarea durante CDC al causar latencia en el destino e impactar la cola de confirmación del clúster.

Privilegios necesarios para usar Redshift como destino

Utilice el comando GRANT para definir privilegios de acceso para un usuario o grupo de usuarios. Los privilegios incluyen opciones de acceso como, por ejemplo, poder leer datos en tablas y vistas, escribir datos y crear tablas. Para obtener más información sobre el uso de CONCEDER con Amazon Redshift, consulte CONCEDER en la Guía para desarrolladores de base de datos de Amazon Redshift.

A continuación, se muestra la sintaxis para otorgar privilegios específicos para una tabla, una base de datos, un esquema, una función, un procedimiento o privilegios en el nivel de lenguaje en tablas o vistas de Amazon Redshift.

GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

A continuación, se muestra la sintaxis de los privilegios del nivel de columna en tablas y vistas de Amazon Redshift.

GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | GROUP group_name | PUBLIC } [, ...]

A continuación, se muestra la sintaxis del privilegio ASSUMEROLE concedido a usuarios y grupos con un rol especificado.

GRANT ASSUMEROLE ON { 'iam_role' [, ...] | ALL } TO { username | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD } [, ...]

Restricciones al uso de Amazon Redshift como destino para AWS Database Migration Service

Las siguientes restricciones se aplican al utilizar una base de datos de Amazon Redshift como destino:

  • No habilite el control de versiones para el bucket de S3 que utiliza como almacenamiento intermedio para el destino de Amazon Redshift. Si necesita el control de versiones de S3, utilice las políticas de ciclo de vida para eliminar activamente las versiones antiguas. De lo contrario, es posible que se produzcan errores en la conexión de las pruebas de punto de conexión debido al tiempo de espera de una llamada a list-object de S3. Para crear una política de ciclo de vida para un bucket de S3, consulte Administración del ciclo de vida del almacenamiento. Para eliminar una versión de un objeto de S3, consulte Eliminación de versiones de objetos de un bucket con control de versiones habilitado.

  • El siguiente DLL no se admite:

    ALTER TABLE table name MODIFY COLUMN column name data type;
  • AWS DMS no puede migrar ni replicar cambios en un esquema con un nombre que comience por un carácter de subrayado (_). Si tiene esquemas que tienen un nombre que comienza por un carácter de subrayado, utilice transformaciones de asignación para cambiar el nombre del esquema en el destino.

  • Amazon Redshift no admite VARCHAR mayores de 64 KB. Los LOB de bases de datos tradicionales no pueden almacenarse en Amazon Redshift.

  • No se puede aplicar una instrucción DELETE a una tabla con una clave principal de varias columnas si alguno de los nombres de columna de la clave principal utiliza una palabra reservada. Vaya aquí para ver una lista con las palabras reservadas de Amazon Redshift.

  • Es posible que se produzcan problemas de rendimiento si el sistema de origen realiza operaciones UPDATE en la clave principal de una tabla de origen. Estos problemas de rendimiento se producen al aplicar cambios al destino. Esto se debe a que las operaciones UPDATE (y DELETE) dependen del valor de la clave principal para identificar la fila de destino. Si actualiza la clave principal de una tabla de origen, el registro de tareas contendrá mensajes como los siguientes:

    Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
  • DMS no admite nombres de DNS personalizados al configurar un punto de conexión para un clúster de Redshift y es necesario utilizar el nombre de DNS proporcionado por Amazon. Como el clúster de Amazon Redshift debe estar en la misma cuenta y región de AWS que la instancia de replicación, se produce un error en la validación si se utiliza un punto de conexión de DNS personalizado.

  • Amazon Redshift tiene un tiempo de espera predeterminado de 4 horas para las sesiones inactivas. Cuando no hay ninguna actividad en la tarea de replicación de DMS, Redshift desconecta la sesión después de 4 horas. Se pueden producir errores si el DMS no puede conectarse y es posible que necesite reiniciarse. Como solución alternativa, establezca un límite de TIEMPO DE ESPERA DE SESIÓN superior a 4 horas para el usuario de replicación de DMS. O bien, consulte la descripción de ALTER USER en la Guía para desarrolladores de bases de datos de Amazon Redshift.

  • Cuando AWS DMS replica los datos de la tabla de origen sin una clave principal o única, es posible que la latencia de CDC sea alta, lo que resulta en un nivel de rendimiento inaceptable.

Configuración de una base de datos de Amazon Redshift como destino para AWS Database Migration Service

AWS Database Migration Service debe configurarse para trabajar con la instancia de Amazon Redshift. En la siguiente tabla se describen las propiedades de configuración disponibles para el punto de conexión de Amazon Redshift.

Propiedad

Descripción

server

El nombre del clúster de Amazon Redshift que está utilizando.

port

El número de puerto de Amazon Redshift. El valor predeterminado es 5439.

username

Un nombre de usuario de Amazon Redshift para un usuario registrado.

password

La contraseña del usuario citado en la propiedad del nombre de usuario.

base de datos

El nombre del almacenamiento de datos de Amazon Redshift (servicio) con le que trabaja.

Si desea agregar atributos adicionales de la cadena de conexión al punto de conexión de Amazon Redshift, puede especificar los atributos maxFileSize y fileTransferUploadStreams. Para obtener más información sobre estos atributos, consulte Configuración de puntos de conexión al utilizar Amazon Redshift como destino para AWS DMS.

Uso del enrutamiento de la VPC mejorado con Amazon Redshift como destino para AWS Database Migration Service

Cuando utiliza enrutamiento de VPC mejorado con el destino de Amazon Redshift, todo el tráfico COPY entre el clúster de Amazon Redshift y los repositorios de datos pasa a través de la VPC. Puesto que Enhanced VPC Routing afecta a la forma en la que Amazon Redshift accede a otros recursos, los comandos COPY podrían fallar si no ha configurado su VPC correctamente.

AWS DMS podría verse afectado por este comportamiento porque utiliza el comando COPY para mover datos de S3 a un clúster de Amazon Redshift.

A continuación se presentan los pasos que realiza AWS DMS para cargar datos en Amazon Redshift como destino:

  1. AWS DMS copia los datos del origen a los archivos .csv en el servidor de replicación.

  2. AWS DMS utiliza el AWS SDK para copiar los archivos .csv en un bucket de S3 en la cuenta.

  3. Por último, AWS DMS utiliza el comando COPY en Amazon Redshift para copiar los datos de los archivos .csv en S3 en una tabla adecuada en Amazon Redshift.

Si el enrutamiento de VPC mejorado no está habilitado, Amazon Redshift dirige el tráfico a través de Internet, incluido el tráfico a otros servicios dentro de la red de AWS. Si la función no está activada, no tendrá que configurar la ruta de acceso a la red. Si la función está activada, deberá crear una ruta de acceso a la red específica entre la VPC de su clúster y sus recursos de datos. Para obtener más información sobre la configuración necesaria, consulte Enrutamiento de la VPC mejorado en la documentación de Amazon Redshift.

Creación y uso de claves de AWS KMS para cifrar datos de destino de Amazon Redshift

Puede cifrar los datos de destino enviados a Amazon S3 antes de que se copien en Amazon Redshift. Para ello, puede crear y utilizar claves de AWS KMS personalizadas. Puede utilizar la clave que ha creado para cifrar los datos de destino mediante uno de los siguientes mecanismos al crear el punto de conexión de destino de Amazon Redshift:

Para cifrar los datos de destino de Amazon Redshift con una clave de KMS, necesita un rol de AWS Identity and Access Management (IAM) que tenga permisos para acceder a los datos de Amazon Redshift. A continuación, se accede a este rol de IAM en una política (una política de claves) asociada a la clave de cifrado que cree. Puede hacer esto en su propia consola de IAM mediante la creación de lo siguiente:

  • Un rol de IAM con una política administrada por AWS.

  • Una clave de KMS con una política de claves que hace referencia a este rol.

En los procedimientos siguientes se describe cómo hacerlo.

Para crear un rol de IAM con la política administrada por AWS requerida
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Seleccione Roles en el panel de navegación. Se abre la página Roles.

  3. Elija Crear rol. Se abre la página Create role (Crear rol).

  4. Con el servicio de AWS elegido como entidad de confianza, elija DMS como servicio para usar el rol.

  5. Elija Siguiente: permisos. Aparece la página Attach permissions policies (Asociar políticas de permisos).

  6. Busque y seleccione la política AmazonDMSRedshiftS3Role.

  7. Elija Siguiente: etiquetas. Aparece la página Add tags (Agregar etiquetas). A continuación, puede añadir las etiquetas que desee.

  8. Elija Next: Review (Siguiente: Revisar) y revise los resultados.

  9. Si la configuración es la que necesita, introduzca un nombre para el rol (por ejemplo, DMS-Redshift-endpoint-access-role) y cualquier descripción adicional, a continuación, elija Create role (Crear rol). Se abre la página Roles con un mensaje que indica que el rol se ha creado.

Ya ha creado el nuevo rol para acceder a recursos de Amazon Redshift para cifrado con un nombre especificado, por ejemplo, DMS-Redshift-endpoint-access-role.

Para crear una clave de cifrado de AWS KMS con una política de claves que hace referencia al rol de IAM
nota

Para obtener más información sobre cómo funciona AWS DMS con las claves de cifrado de AWS KMS, consulte Establecer una clave de cifrado y especificar los permisos AWS KMS.

  1. Inicie sesión en la AWS Management Console y abra la consola de AWS Key Management Service (AWS KMS) en https://console.aws.amazon.com/kms.

  2. Para cambiar la Región de AWS, utilice el Selector de regiones ubicado en la esquina superior derecha de la página.

  3. En el panel de navegación, elija Claves administradas por el cliente.

  4. Elija Create key. Se abrirá la página Configure key (Configurar clave).

  5. En Key type (Tipo de clave), elija Symmetric (Simétrica).

    nota

    Al crear esta clave, solo puede crear una clave simétrica, ya que todos los servicios de AWS, como Amazon Redshift, solo funcionan con claves de cifrado simétricas.

  6. Elija Advanced Options. En Key material origin (Origen del material de la clave), asegúrese de elegir KMS y, a continuación, seleccione Next (Siguiente). Se abrirá la página Add labels (Agregar etiquetas).

  7. En Create alias and description (Crear alias y descripción), escriba un alias para la clave (por ejemplo, DMS-Redshift-endpoint-encryption-key) y una descripción adicional.

  8. En Tags (Etiquetas), agregue las etiquetas que desee para ayudar a identificar la clave y realizar el seguimiento de su uso y, a continuación, seleccione Next (Siguiente). Se abre la página Define key administrative permissions (Definir permisos administrativos clave), que muestra una lista de usuarios y roles entre los que puede elegir.

  9. Añada los usuarios y roles que desee para administrar la clave. Asegúrese de que estos usuarios y roles tengan los permisos necesarios para administrar la clave.

  10. En Key deletion (Eliminación de clave), elija si los administradores de claves pueden eliminar la clave; a continuación, seleccione Next (Siguiente). Se abre la página Define key usage permissions (Definir permisos de uso de claves) que muestra una lista adicional de usuarios y roles entre los que puede elegir.

  11. En Esta cuenta, elija los usuarios disponibles que deberán poder realizar operaciones criptográficas en los objetivos de Amazon Redshift. Además, elija el rol que creó previamente en Roles para habilitar el acceso con el fin de cifrar los objetos de destino de Amazon Redshift, por ejemplo DMS-Redshift-endpoint-access-role.

  12. Si quiere agregar otras cuentas que no figuran en la lista para que tengan el mismo acceso, en Otras cuentas de AWS, elija Agregar otra cuenta de AWS y, a continuación, elija Siguiente. Se abre la página Review and edit key policy (Revisar y editar la política de claves) que muestra el JSON de la política de claves que puede revisar y editar escribiendo en el JSON existente. Aquí puede ver en qué puntos de la política de claves se hace referencia al rol y a los usuarios (por ejemplo, Admin y User1) que eligió en el paso anterior. También puede ver las distintas acciones de claves permitidas para las distintas entidades principales (usuarios y roles), tal y como se muestra en el siguiente ejemplo.

    { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
  13. Seleccione Finalizar. Se abre la página Claves de cifrado con un mensaje que indica que se ha creado AWS KMS key.

Ahora ha creado una nueva clave de KMS con un alias especificado (por ejemplo, DMS-Redshift-endpoint-encryption-key). Esta clave permite a AWS DMS cifrar los datos de destino de Amazon Redshift.

Configuración de puntos de conexión al utilizar Amazon Redshift como destino para AWS DMS

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Amazon Redshift de forma similar al uso de atributos de conexión adicionales. Se especifican los ajustes cuando se crea el punto de conexión de destino mediante la consola de AWS DMS o mediante el comando create-endpoint en la AWS CLI, con la sintaxis JSON --redshift-settings '{"EndpointSetting": "value", ...}'.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Amazon Redshift como destino.

Nombre Descripción

MaxFileSize

Especifica el tamaño máximo (en KB) de cualquier archivo .csv que se utiliza para transferir datos a Amazon Redshift.

Valor predeterminado: 32768 KB (32 MB)

Valores válidos: 1-1 048 576

Ejemplo: --redshift-settings '{"MaxFileSize": 512}'

FileTransferUploadStreams

Especifica el número de subprocesos utilizados para cargar un único archivo.

Valor predeterminado: 10

Valores válidos: 1-64

Ejemplo: --redshift-settings '{"FileTransferUploadStreams": 20}'

Acceptanydate

Especifica si se acepta cualquier formato de fecha, incluidos los formatos de fecha no válidos como 0000-00-00. Valor booleano.

Valor predeterminado: false

Valores válidos: true | false

Ejemplo: --redshift-settings '{"Acceptanydate": true}'

Dateformat

Especifica el formato de fecha. Es una entrada de cadena que está vacía de forma predeterminada. El formato predeterminado es YYYY-MM-DD, pero puede cambiarlo, por ejemplo, a DD-MM-YYYY. Si utiliza otros formatos para los valores de fecha, use el argumento auto con el parámetro Dateformat. El argumento auto reconoce varios formatos que no se admiten cuando se utiliza una cadena Dateformat. La palabra clave auto distingue entre mayúsculas y minúsculas.

Valor predeterminado: vacío

Valores válidos: “dateformat_string” o auto

Ejemplo:--redshift-settings '{"Dateformat": "auto"}'

Timeformat

Especifica el formato de hora. Es una entrada de cadena que está vacía de forma predeterminada. El argumento auto reconoce varios formatos que no se admiten cuando se utiliza una cadena Timeformat. Si utiliza valores de fecha y hora con formatos distintos entre sí, use el argumento auto con el parámetro Timeformat.

Valor predeterminado: 10

Valores válidos: “Timeformat_string” | “auto” | “epochsecs” | “epochmillisecs”

Ejemplo:--redshift-settings '{"Timeformat": "auto"}'

Emptyasnull

Especifica si AWS DMS debería migrar los campos de tipo CHAR y VARCHAR vacíos como null. El valor true establece en null los campos CHAR y VARCHAR vacíos.

Valor predeterminado: false

Valores válidos: true | false

Ejemplo: --redshift-settings '{"Emptyasnull": true}'

TruncateColumns

Trunca los datos de las columnas al número adecuado de caracteres de modo que se ajuste a la especificación de la columna. Aplica solo para las columnas con un tipo de datos CHAR o VARCHAR y filas de 4 MB de tamaño, o menos.

Valor predeterminado: false

Valores válidos: true | false

Ejemplo: --redshift-settings '{"TruncateColumns": true}'

RemoveQuotes

Elimina las comillas circundantes de las cadenas en los datos entrantes. Todos los caracteres dentro de las comillas, incluidos los delimitadores, se conservan. Para obtener más información sobre la eliminación de las comillas para un destino de Amazon Redshift, consulte la Guía para desarrolladores de bases de datos de Amazon Redshift.

Valor predeterminado: false

Valores válidos: true | false

Ejemplo: --redshift-settings '{"RemoveQuotes": true}'

TrimBlanks

Elimina los caracteres de espacio en blanco del final de una cadena VARCHAR. Este parámetro aplica solo para las columnas con un tipo de datos VARCHAR.

Valor predeterminado: false

Valores válidos: true | false

Ejemplo: --redshift-settings '{"TrimBlanks": true}'

EncryptionMode Especifica el modo de cifrado del lado del servidor que desea utilizar para enviar los datos a S3 antes de que se copien en Amazon Redshift. Los valores válidos son SSE_S3 (cifrado del lado del servidor de S3) o SSE_KMS (cifrado de clave de KMS). Si elige SSE_KMS, establezca el parámetro ServerSideEncryptionKmsKeyId en el nombre de recurso de Amazon (ARN) para la clave de KMS que se va a utilizar para cifrado.
nota

También puede usar el comando modify-endpoint de la CLI para cambiar el valor de la configuración de EncryptionMode para un punto de conexión existente de SSE_KMS a SSE_S3. Sin embargo, no se puede cambiar el valor EncryptionMode de SSE_S3 a SSE_KMS.

Valor predeterminado: SSE_S3

Valores válidos: SSE_S3 o SSE_KMS

Ejemplo:--redshift-settings '{"EncryptionMode": "SSE_S3"}'

ServerSideEncryptionKmsKeyId Si establece EncryptionMode en SSE_KMS, establezca este parámetro en el ARN para la clave de KMS. Puede encontrar este ARN seleccionando el alias de clave en la lista de claves de AWS KMS creadas para su cuenta. Al crear la clave, debe asociar políticas y roles específicos a la misma. Para obtener más información, consulte Creación y uso de claves de AWS KMS para cifrar datos de destino de Amazon Redshift.

Ejemplo: --redshift-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'

EnableParallelBatchInMemoryCSVFiles La configuración EnableParallelBatchInMemoryCSVFiles mejora el rendimiento de las tareas más grandes con varios subprocesos de plena carga al permitir que DMS escriba en el disco en lugar de en la memoria. El valor predeterminado es false.
CompressCsvFiles Utilice este atributo para comprimir los datos enviados a un destino de Amazon Redshift durante la migración. El valor predeterminado es true y la compresión está habilitada de forma predeterminada.

Uso de una clave de cifrado de datos y un bucket de Amazon S3 como almacenamiento intermedio

Puede utilizar la configuración de puntos de conexión de destino de Amazon Redshift para configurar lo siguiente:

  • Una clave de cifrado de datos de AWS KMS personalizada. A continuación, puede utilizar esta clave para cifrar los datos enviados a Amazon S3 antes de que se copien en Amazon Redshift.

  • Un bucket de S3 personalizado como almacenamiento intermedio para datos migrados a Amazon Redshift.

  • Asigne un booleano como booleano de un origen de PostgreSQL. De forma predeterminada, un tipo BOOLEANO se migra como varchar(1). Puede especificar MapBooleanAsBoolean para permitir que el destino de Redshift migre el tipo booleano como booleano, como se muestra en el siguiente ejemplo.

    --redshift-settings '{"MapBooleanAsBoolean": true}'

    Tenga en cuenta que debe establecer esta configuración en los puntos de conexión de origen y destino para que surta efecto.

Configuración de clave de KMS para cifrado de datos

Los siguientes ejemplos muestran cómo configurar una clave de KMS personalizada para cifrar los datos que se envíen a S3. Para comenzar, podría realizar la siguiente llamada a create-endpoint en la AWS CLI.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'

Aquí, el objeto JSON especificado por la opción --redshift-settings define dos parámetros. Uno es un parámetro EncryptionMode con el valor SSE_KMS. El otro es un parámetro ServerSideEncryptionKmsKeyId con el valor arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1. Este valor es un nombre de recurso de Amazon (ARN) para su clave de KMS personalizada.

De forma predeterminada, el cifrado de datos de S3 se realiza utilizando el cifrado del lado del servidor de S3. Para el destino de Amazon Redshift del ejemplo anterior, esto es también equivalente a especificar la configuración del punto de conexión, como se indica en el siguiente ejemplo.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_S3"}'

Para obtener más información sobre cómo trabajar con el cifrado en el lado del servidor de S3, consulte Protección de datos con el cifrado del lado del servidor en la Guía del usuario de Amazon Simple Storage Service.

nota

También puede usar el comando modify-endpoint de la CLI para cambiar el valor del parámetro de EncryptionMode para un punto de conexión existente de SSE_KMS a SSE_S3. Sin embargo, no se puede cambiar el valor EncryptionMode de SSE_S3 a SSE_KMS.

Configuración del bucket de Amazon S3

Al migrar datos a un punto de conexión de destino de Amazon Redshift, AWS DMS utiliza un bucket de Amazon S3 predeterminado como almacenamiento intermedio de tarea antes de copiar los datos migrados a Amazon Redshift. Por ejemplo, los ejemplos que se muestran para crear un punto de conexión de destino de Amazon Redshift con una clave de cifrado de datos de AWS KMS utilizan este bucket de S3 predeterminado (consulte Configuración de clave de KMS para cifrado de datos).

En su lugar, puede especificar un bucket de S3 personalizado para este almacenamiento intermedio incluyendo los siguientes parámetros en el valor de la opción --redshift-settings en el comando de la AWS CLI create-endpoint:

  • BucketName: una cadena que especifica como el nombre del almacenamiento de bucket de S3. Si el puesto de acceso al servicio se basa en la política AmazonDMSRedshiftS3Role, este valor debe tener un prefijo de dms-, por ejemplo, dms-my-bucket-name.

  • BucketFolder: (opcional) una cadena que puede especificar como nombre de la carpeta de almacenamiento en el bucket de S3 especificado.

  • ServiceAccessRoleArn: el ARN de un rol de IAM que permite acceso administrativo al bucket de S3. Normalmente, crea este rol en función de la política AmazonDMSRedshiftS3Role. Para ver un ejemplo, consulte el procedimiento para crear un rol de IAM con la política administrada por AWS requerida en Creación y uso de claves de AWS KMS para cifrar datos de destino de Amazon Redshift.

    nota

    Si especifica el ARN de un rol de IAM distinto utilizando la opción --service-access-role-arn del comando create-endpoint, esta opción de rol de IAM tiene prioridad.

El ejemplo siguiente muestra cómo podría utilizar estos parámetros para especificar un bucket de Amazon S3 personalizado en la siguiente llamada create-endpoint mediante la AWS CLI.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"}'

Configuración de tareas de subprocesos múltiples para Amazon Redshift

Puede mejorar el rendimiento de las tareas de captura de datos de carga completa y de cambios (CDC) para un punto de conexión de destino de Amazon Redshift mediante la configuración de tareas de subprocesos múltiples. Le habilitan para especificar el número de subprocesos simultáneos y el número de registros que se van a almacenar en un búfer.

Configuración de tareas de carga completa de subprocesos múltiples para Amazon Redshift

Para mejorar el rendimiento a plena carga, puede utilizar la siguiente configuración de tareas ParallelLoad*:

  • ParallelLoadThreads: especifica el número de subprocesos simultáneos que utiliza DMS durante una carga completa para insertar registros de datos en un punto de conexión de destino de Amazon Redshift. El valor predeterminado es cero (0) y el valor máximo es 32. Para obtener más información, consulte Configuración de tareas de carga completa.

    Puede establecer el atributo enableParallelBatchInMemoryCSVFiles en false al usar la configuración de tareas ParallelLoadThreads. El atributo mejora el rendimiento de las tareas más grandes con varios subprocesos de plena carga al permitir que DMS escriba en el disco en lugar de en la memoria. El valor predeterminado es true.

  • ParallelLoadBufferSize: especifica el número máximo de solicitudes de registro de datos cuando se utilizan subprocesos de carga paralelos con destino de Redshift. El valor predeterminado es 100 y el máximo es 1000. Se recomienda utilizar esta opción cuando ParallelLoadThreads > 1 (superior a uno).

nota

La compatibilidad para el uso de la configuración de tareas ParallelLoad* durante FULL LOAD en puntos de conexión de destino de Amazon Redshift está disponible en las versiones de AWS DMS 3.4.5 y superiores.

No se admite el uso de la configuración de punto de conexión de ReplaceInvalidChars Redshift durante la captura de datos de cambio (CDC) o durante una tarea de migración de CARGA COMPLETA con carga paralela. Se admite la migración de CARGA COMPLETA cuando la carga paralela no está habilitada. Para obtener más información, consulte RedshiftSettings en la Referencia de la API de AWS Database Migration Service

Configuración de tareas de CDC con varios subprocesos para Amazon Redshift

Para mejorar el rendimiento de CDC, puede utilizar la siguiente configuración de tareas ParallelApply*:

  • ParallelApplyThreads: especifica el número de subprocesos simultáneos que utiliza AWS DMS durante una carga de CDC para insertar registros de datos en un punto de conexión de destino de Amazon Redshift. El valor predeterminado es cero (0) y el valor máximo es 32. El valor mínimo recomendado es igual al número de secciones en el clúster.

  • ParallelApplyBufferSize: especifica el número máximo de solicitudes de registro de datos cuando se utilizan subprocesos de aplicación paralelos con destino de Redshift. El valor predeterminado es 100 y el máximo es 1000. Se recomienda utilizar esta opción cuando ParallelApplyThreads > 1 (superior a uno).

    Para obtener el máximo beneficio de Redshift como objetivo, recomendamos que el valor de ParallelApplyBufferSize sea al menos dos veces (el doble o más) el número de ParallelApplyThreads.

nota

La compatibilidad para el uso de la configuración de tareas ParallelApply* durante CDC en puntos de conexión de destino de Amazon Redshift está disponible en las versiones de AWS DMS 3.4.3 y superiores.

El nivel de paralelismo aplicado depende de la correlación entre el tamaño total del lote y el tamaño máximo del archivo utilizado para transferir los datos. Cuando se utilizan configuraciones de tareas de CDC con varios subprocesos con un objetivo de Redshift, se obtienen beneficios cuando el tamaño del lote es grande en relación con el tamaño máximo del archivo. Por ejemplo, puede utilizar la siguiente combinación de ajustes de punto de conexión y tarea para ajustar el rendimiento y lograr un rendimiento óptimo.

// Redshift endpoint setting MaxFileSize=250000; // Task settings BatchApplyEnabled=true; BatchSplitSize =8000; BatchApplyTimeoutMax =1800; BatchApplyTimeoutMin =1800; ParallelApplyThreads=32; ParallelApplyBufferSize=100;

Con la configuración del ejemplo anterior, un cliente con una gran carga de trabajo transaccional se beneficia de que el búfer de lotes, que contiene 8000 registros, se rellena en 1800 segundos y utiliza 32 subprocesos paralelos con un tamaño de archivo máximo de 250 MB.

Para obtener más información, consulte Configuración de ajuste del procesamiento de cambios.

nota

Las consultas de DMS que se ejecutan durante la replicación en curso en un clúster de Redshift pueden compartir la misma cola de WLM (administración de carga de trabajo) con otras consultas de aplicaciones que se estén ejecutando. Por lo tanto, considere la posibilidad de configurar correctamente las propiedades del WLM para influir en el rendimiento durante la replicación en curso en un objetivo de Redshift. Por ejemplo, si se están ejecutando otras consultas de ETL paralelas, DMS se ejecuta más lentamente y se pierden las ganancias de rendimiento.

Tipos de datos de destino para Amazon Redshift

El punto de enlace de Amazon Redshift para AWS DMS es compatible con la mayoría de los tipos de datos de Amazon Redshift. La siguiente tabla muestra los tipos de datos de destino de Amazon Redshift que se admiten cuando se utiliza AWS DMS y la asignación predeterminada desde los tipos de datos de AWS DMS.

Para obtener más información sobre los tipos de datos de AWS DMS, consulte Tipos de datos de AWS Database Migration Service.

Tipos de datos de AWS DMS

Tipos de datos de Amazon Redshift

BOOLEAN

BOOL

BYTES

VARCHAR (longitud)

FECHA

FECHA

TIME

VARCHAR(20)

DATETIME

Si la escala es => 0 y =< 6, según el tipo de columna de destino de Redshift, una de las siguientes opciones:

TIMESTAMP (s)

TIMESTAMPTZ: si la marca temporal de origen contiene un desfase de zona (como en SQL Server u Oracle), se convierte a UTC al insertarlo o actualizarlo. Si no contiene ningún desfase, la hora ya se considera en UTC.

Si la escala es => 7 y =< 9, utilice:

VARCHAR (37)

INT1

INT2

INT2

INT2

INT4

INT4

INT8

INT8

NUMERIC

Si la escala es => 0 y =< 37, utilice:

NUMERIC (p,s)

Si la escala es => 38 y =< 127, utilice:

VARCHAR (longitud)

REAL4

FLOAT4

REAL8

FLOAT8

STRING

Si la longitud es de 1-65 535, utilice VARCHAR (longitud en bytes)

Si la longitud es 65,536–2,147,483,647, utilice VARCHAR (65535)

UINT1

INT2

UINT2

INT2

UINT4

INT4

UINT8

NUMERIC (20,0)

WSTRING

Si la longitud es de 1-65 535, utilice NVARCHAR (longitud en bytes)

Si la longitud es 65,536–2,147,483,647, utilice NVARCHAR (65535)

BLOB

VARCHAR (longitud máxima del LOB *2)

La longitud máxima del LOB no puede superar 31 KB. Amazon Redshift no admite VARCHAR mayores de 64 KB.

NCLOB

NVARCHAR (longitud máxima del LOB)

La longitud máxima del LOB no puede superar 63 KB. Amazon Redshift no admite VARCHAR mayores de 64 KB.

CLOB

VARCHAR (longitud máxima del LOB)

La longitud máxima del LOB no puede superar 63 KB. Amazon Redshift no admite VARCHAR mayores de 64 KB.

Uso de AWS DMS con Amazon Redshift sin servidor como objetivo

AWS DMS admite el uso de Amazon Redshift sin servidor como punto de conexión de destino. Para obtener información sobre el uso de Amazon Redshift sin servidor, consulte Amazon Redshift sin servidor en la Guía de administración de Amazon Redshift.

En este tema se describe cómo utilizar un punto de conexión de Amazon Redshift sin servidor con AWS DMS.

nota

Al crear un punto de conexión de Amazon Redshift sin servidor, para el campo DatabaseName de la configuración del punto de conexión de RedshiftSettings, utilice el nombre del almacenamiento de datos de Amazon Redshift o el nombre del punto de conexión del grupo de trabajo. Para el campo ServerName, utilice el valor de punto de conexión que se muestra en la página Grupo de trabajo del clúster sin servidor (por ejemplo, default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com). Para obtener información acerca de cómo crear un punto de conexión, consulte Creación de puntos de enlace de origen y destino. Para obtener información sobre el punto de conexión del grupo de trabajo, consulte Conexión a Amazon Redshift sin servidor.

Política de confianza con Amazon Redshift sin servidor como objetivo

Si utiliza Amazon Redshift sin servidor como punto de conexión de destino, debe agregar la siguiente sección resaltada a la política de confianza. Esta política de confianza está asociada al puesto dms-access-for-endpoint.

{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "arn:aws:service:region:account:resourcetype/id", "Effect": "Allow" }, { "Sid": "", "Effect": "Allow", "Principal": { "Service": "redshift-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "IsDefaultVersion": true } }

Para obtener más información sobre el uso de una política de confianza con AWS DMS, consulte Crear las funciones de IAM para usarlas con la API AWS CLI y AWS DMS.

Limitaciones al usar Amazon Redshift sin servidor como destino

El uso de Redshift sin servidor como objetivo tiene las siguientes limitaciones: