Uso de una base de datos de Amazon Redshift como destino deAWS 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 deAWS Database Migration Service

Puede migrar datos a las bases de datos de Amazon Redshift medianteAWS Database Migration Service. Amazon Redshift es un servicio de data warehouse administrado de varios petabytes en la nube. Con una base de datos de Amazon Redshift como destino, puede migrar datos de todas las demás bases de datos de origen compatibles.

El clúster de Amazon Redshift debe estar en la mismaAWS cuenta yAWS región de que la instancia de replicación.

Durante la migración de una base de datos a Amazon Redshift,AWS DMS primero mueve los datos a un bucket de Amazon S3. Cuando los archivos residen en un bucket de Amazon S3, losAWS DMS transfiere a las tablas correspondientes del almacén de datos de Amazon Redshift. AWS DMScrea el bucket de S3 en la mismaAWS región de que la base de datos de Amazon Redshift. La instancia deAWS DMS replicación debe estar ubicada en esa mismaAWS región.

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

El endpoint de Amazon Redshift proporciona una automatización completa para 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 operaciones de carga completa,AWS DMS crea archivos para cada tabla. AWS DMSluego copia los archivos de tabla 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 DMSa continuación, carga los archivos de cambio de red en Amazon S3 y copia los datos en Amazon Redshift.

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

Requisitos previos para utilizar una base de datos de Amazon Redshift como destino deAWS Database Migration Service

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

  • Utilice la consolaAWS de administración para lanzar un clúster de Amazon Redshift. Anote la información básica sobre suAWS cuenta y su 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 endpoint de destino de Amazon Redshift.

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

  • La instancia deAWS DMS replicación necesita conectividad de red con el punto de enlace de Amazon Redshift (nombre de host y puerto) que utiliza su clúster.

  • AWS DMSutiliza 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 APIAWS CLI o DMS para crear una migración de base de datos con Amazon Redshift como 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 Creación de los roles de IAM para usar con la AWS CLI y la API de AWS DMS.

  • AWS DMSconvierte los BLOB, CLOB y NCLOB en 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 tareas de metadatos de destino entrue for BatchApplyEnabledAWS DMSpara gestionar los cambios en las tablas de destino de Amazon Redshift durante la 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 objetivo

Utilice el comando GRANT para definir los privilegios de acceso de 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 GRANT con Amazon Redshift, consulte GRANT en la Guía para desarrolladores de bases de datos de Amazon Redshift.

A continuación, se muestra la sintaxis para conceder privilegios específicos a tablas, bases de datos, esquemas, funciones, procedimientos o privilegios del nivel de idioma en tablas y 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 } [, ...]

Limitaciones al uso de Amazon Redshift como objetivo paraAWS Database Migration Service

Se aplican las siguientes limitaciones 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 su destino de Amazon Redshift. Si necesita el control de versiones de S3, utilice 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 prueba de punto final debido a que se agotó el tiempo de espera de unalist-object llamada 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 Eliminar 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. Haga clic aquí para ver una lista de las palabras reservadas de Amazon Redshift.

  • Puede experimentar problemas de rendimiento si el sistema de origen realiza operaciones de ACTUALIZACIÓN en la clave principal de una tabla de origen. Estos problemas de rendimiento se producen al aplicar cambios al objetivo. Esto se debe a que las operaciones UPDATE (y DELETE) dependen del valor de la clave principal para identificar la fila de destino. Si actualizas la clave principal de una tabla fuente, 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 DNS personalizados al configurar un punto final para un clúster de Redshift, y debes usar el nombre DNS proporcionado por Amazon. Dado que el clúster de Amazon Redshift debe estar en la mismaAWS cuenta y región que la instancia de replicación, se produce un error en la validación si se utiliza un punto de enlace de DNS personalizado.

  • Amazon Redshift tiene un tiempo de espera predeterminado de 4 horas para las sesiones inactivas. Cuando no hay ninguna actividad dentro de la tarea de replicación del DMS, Redshift desconecta la sesión después de 4 horas. Los errores pueden deberse a que el DMS no puede conectarse y, posiblemente, 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.

  • CuandoAWS DMS replica los datos de la tabla fuente sin una clave principal o única, la latencia de los CDC puede ser alta, lo que se traduce en un nivel de rendimiento inaceptable.

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

AWS Database Migration Servicese debe configurar para que funcione con la instancia de Amazon Redshift. En la siguiente tabla, se muestran las propiedades de configuración disponibles para el endpoint de Amazon Redshift.

Propiedad

Descripción

servidor

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

puerto

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

username

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 el que está trabajando.

Si desea añadir atributos de cadena de conexión adicionales a su punto de conexión de Amazon Redshift, puede especificar losfileTransferUploadStreams atributosmaxFileSize y. Para obtener más información sobre estos atributos, consulte Configuración de endpoint cuando se utiliza Amazon Redshift como destino paraAWS DMS.

Uso de un enrutamiento de VPC mejorado con Amazon Redshift como objetivo paraAWS Database Migration Service

Si utiliza el enrutamiento de VPC mejorado con su destino de Amazon Redshift, todo el tráfico de COPY entre su clúster de Amazon Redshift y sus repositorios de datos pasa por su 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 DMSpuede verse afectado por este comportamiento porque utiliza el comando COPY para mover los 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 DMSusa elAWS SDK para copiar los archivos.csv en un bucket de S3 de tu cuenta.

  3. AWS DMSluego usa el comando COPY de Amazon Redshift para copiar los datos de los archivos.csv de S3 a una tabla adecuada de 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 laAWS red de. 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 requerida, consulte el enrutamiento de VPC mejorado en la documentación de Amazon Redshift.

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

Puede cifrar los datos de destino enviados a Amazon S3 antes de copiarlos a Amazon Redshift. Para ello, puede crear y utilizar claves de AWS KMS personalizadas. Puede utilizar la clave que creó para cifrar los datos de destino mediante uno de los siguientes mecanismos al crear el punto de enlace de destino de Amazon Redshift:

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

  • Un rol de IAM con una políticaAWS gestionada.

  • Una clave de KMS con una política clave que hace referencia a esta función.

En los procedimientos siguientes se describe cómo hacerlo.

Para crear un rol de IAM con la política deAWS administración de datos requerida
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

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

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

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

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

  6. Busque y seleccione la política AmazonDMSRedshiftS3Role.

  7. Elija Next: Tags (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 los recursos de Amazon Redshift para el cifrado con un nombre específico, por ejemploDMS-Redshift-endpoint-access-role.

Para crear una clave deAWS KMS cifrado con una política de claves que haga referencia a su 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 Configuración de una clave de cifrado y especificación de permisos de AWS KMS.

  1. Inicie sesión en la AWS Management Console y abra la consola 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 losAWS servicios, 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. Para esta cuenta, elija los usuarios disponibles que desee realizar operaciones criptográficas en los destinos de Amazon Redshift. Elija también el rol que creó anteriormente en Roles para permitir el acceso y cifrar los objetos de destino de Amazon Redshift, por ejemploDMS-Redshift-endpoint-access-role).

  12. Si quieres añadir otras cuentas que no figuran en la lista para tener este mismo acceso, en OtrasAWS cuentas, selecciona Añadir otraAWS cuenta y, a continuación, selecciona 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. Elija Finalizar. La página de claves de cifrado se abre con un mensaje que indica que seAWS KMS key ha creado la suya.

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

Configuración de endpoint cuando se utiliza Amazon Redshift como destino paraAWS DMS

Puede utilizar la configuración de los endpoints para configurar la base de datos de destino de Amazon Redshift de forma similar a utilizar atributos de conexión adicionales. La configuración se especifica al crear el punto final de destino mediante laAWS DMS consola o mediante elcreate-endpoint comando de AWS CLI, con la sintaxis--redshift-settings '{"EndpointSetting": "value", ...}' JSON.

En la siguiente tabla, se muestra la configuración de los endpoints 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 utilice para transferir datos a Amazon Redshift.

Valor predeterminado: 32768 KB (32 MB)

Valores válidos: 1 a 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: de 1 a 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" oauto

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 cómo eliminar las comillas de 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 copiarlos a 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 elmodify-endpoint comando CLI para cambiar el valor de laEncryptionMode configuración de un punto final existente deSSE_KMS aSSE_S3. Pero no puedes cambiar elEncryptionMode valor deSSE_S3 aSSE_KMS.

Valor predeterminado: SSE_S3

Valores válidos: SSE_S3 o SSE_KMS

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

ServerSideEncryptionKmsKeyId Si lo estableceSSE_KMS,EncryptionMode defina este parámetro en el ARN de la clave 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 deAWS KMS claves para cifrar los datos de destino de Amazon Redshift.

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

EnableParallelBatchInMemoryCSVFiles Defina este atributo enfalse cuando utilice la configuración deParallelLoadThreads tareas. LaEnableParallelBatchInMemoryCSVFiles configuración mejora el rendimiento de las tareas multiproceso más grandes con carga completa al hacer que el DMS escriba en el disco en lugar de en la memoria. El valor predeterminado es true.
CompressCsvFile Utilice este atributo para comprimir los datos enviados a un destino de Amazon Redshift durante la migración. El valor predeterminado estrue, 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 los endpoints 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 copiarlos a Amazon Redshift.

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

  • Mapee un booleano como un booleano de una fuente de PostgreSQL. De forma predeterminada, un tipo BOOLEANO se migra como varchar (1). Puede especificarMapBooleanAsBoolean que su objetivo de Redshift migre el tipo booleano como booleano, como se muestra en el siguiente ejemplo.

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

Configuración de claves de KMS para el 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 Amazon Redshift del ejemplo anterior, esto también equivale a especificar la configuración de sus puntos finales, como en el ejemplo siguiente.

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 del lado del servidor de S3, consulte Protección de datos mediante el cifrado del lado del servidor en la Guía del usuario de Amazon Simple Storage Service.

nota

También puede usar elmodify-endpoint comando CLI para cambiar el valor delEncryptionMode parámetro de un punto final existente deSSE_KMS aSSE_S3. Pero no puedes cambiar elEncryptionMode valor deSSE_S3 aSSE_KMS.

Configuración de bucket de Amazon S3

Al migrar datos a un punto final de destino de Amazon Redshift,AWS DMS utiliza un bucket predeterminado de Amazon S3 como almacenamiento de tareas intermedio antes de copiar los datos migrados a Amazon Redshift. Por ejemplo, los ejemplos que se muestran para crear un punto de enlace de destino de Amazon Redshift con una clave de cifrado deAWS KMS datos utilizan este bucket de S3 predeterminado (consulteConfiguración de claves de KMS para el 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 se especifica como nombre del almacenamiento de bucket de S3.

  • BucketFolder— (Opcional) Cadena que puede especificar como nombre de la carpeta de almacenamiento en el bucket de S3 especificado.

  • ServiceAccessRoleArn: ARN de un rol de IAM que permite el 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íticaAWS gestionada requeridaCreación y uso deAWS KMS claves para cifrar los 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 siguiente ejemplo muestra cómo puede utilizar estos parámetros para especificar un bucket de Amazon S3 personalizado en la siguientecreate-endpoint llamada mediante elAWS 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 multiproceso para Amazon Redshift

Puede mejorar el rendimiento de las tareas de captura de datos (CDC) de carga completa y cambiar las tareas de captura de datos (CDC) para un punto final de Amazon Redshift mediante la configuración de tareas multiproceso. Permiten especificar el número de subprocesos simultáneos y el número de registros que se almacenarán en un búfer.

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

Para promover el rendimiento a plena carga, puede utilizar la siguiente configuración deParallelLoad* tareas:

  • ParallelLoadThreads— Especifica el número de subprocesos simultáneos que el DMS utiliza durante una carga completa para enviar los registros de datos a un punto final de destino de Amazon Redshift. El valor predeterminado es cero (0) y el valor máximo es 32.

    Puede utilizar elenableParallelBatchInMemoryCSVFiles atributo establecido parafalse cuando utilice la configuración deParallelLoadThreads tareas. El atributo mejora el rendimiento de las tareas de carga completa con subprocesos múltiples más grandes al hacer que el 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 al utilizar subprocesos de carga parallel con Redshift Target. El valor predeterminado es 100 y el máximo, 1000. Le recomendamos que utilice esta opción cuando sea ParallelLoadThreads > 1 (más de uno).

nota

La Support el uso de la configuración deParallelLoad* tareas durante la CARGA COMPLETA en los puntos de destino de Amazon Redshift está disponible enAWS DMS las versiones 3.4.5 y posteriores.

No se admite el uso de la configuración de punto final deReplaceInvalidChars Redshift durante la captura de cambios de datos (CDC) ni durante una tarea de migración a CARGA COMPLETA habilitada para carga parallel. Es compatible con la migración a CARGA COMPLETA cuando la carga en parallel no está habilitada. Para obtener más información, consulte RedshiftSettingsla referencia de laAWS Database Migration Service API.

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

Para promover el desempeño de los CDC, puede usar la siguiente configuración deParallelApply* tareas:

  • ParallelApplyThreads— Especifica la cantidad de subprocesos simultáneos que seAWS DMS utilizan durante una carga de CDC para enviar registros de datos a un punto final de destino de Amazon Redshift. El valor predeterminado es cero (0) y el valor máximo es 32.

  • ParallelApplyBufferSize— Especifica el máximo de solicitudes de registro de datos al utilizar subprocesos de aplicación en parallel con Redshift Target. El valor predeterminado es 100 y el máximo, 1000. Se recomienda utilizar esta opción cuando sea ParallelApplyThreads > 1 (más de uno).

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

nota

La Support el uso de la configuración deParallelApply* tareas durante la CDC en los puntos de destino de Amazon Redshift está disponible enAWS DMS las versiones 3.4.3 y posteriores.

El nivel de paralelismo aplicado depende de la correlación entre el tamaño total del lote y el tamaño máximo de archivo utilizado para transferir datos. Cuando se utiliza la configuración de tareas de CDC multiproceso 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 final y tarea para realizar ajustes 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 anterior, un cliente con una gran carga de trabajo transaccional se beneficia de que su búfer de lotes de 8000 MB se llena en 1800 segundos, utilizando 32 subprocesos parallel 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 (gestión de la carga de trabajo) con otras consultas de aplicaciones que se estén ejecutando. Por lo tanto, considere 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 ETL parallel, el 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 para elAWS Database Migration Service.

Tipos de datos de AWS DMS

Tipos de datos de Amazon Redshift

BOOLEANO

BOOL

BYTES

VARCHAR (longitud)

DATE

DATE

TIME

VARCHAR(20)

DATETIME

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

TIMESTAMP (s)

TIMESTAMPTZ (s): si la marca de tiempo de origen contiene un desfase de zona (como en SQL Server u Oracle), se convierte a UTC al insertar/actualizar. Si no contiene ningún desfase, la hora ya se considera 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 a 65.535, utilice VARCHAR (longitud en bytes)

Si la longitud es de 65.536 a 2 147 483 647, utilice VARCHAR (65535)

UINT1

INT2

UINT2

INT2

UINT4

INT4

UINT8

NUMERIC (20,0)

WSTRING

Si la longitud es de 1 a 65.535, utilice NVARCHAR (longitud en bytes)

Si la longitud es de 65.536 a 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.