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 Creación de los roles de IAM para usar con la AWS CLI y la API de 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:
Temas
- Requisitos previos para el uso de una base de datos de Amazon Redshift como destino para AWS Database Migration Service
- Privilegios necesarios para usar Redshift como destino
- Restricciones al uso de Amazon Redshift como destino para AWS Database Migration Service
- Configuración de una base de datos de Amazon Redshift como destino para AWS Database Migration Service
- Uso del enrutamiento de la VPC mejorado con Amazon Redshift como destino para AWS Database Migration Service
- Creación y uso de claves de AWS KMS para cifrar datos de destino de Amazon Redshift
- Configuración de puntos de conexión al utilizar Amazon Redshift como destino para AWS DMS
- Uso de una clave de cifrado de datos y un bucket de Amazon S3 como almacenamiento intermedio
- Configuración de tareas de subprocesos múltiples para Amazon Redshift
- Tipos de datos de destino para Amazon Redshift
- Uso de AWS DMS con Amazon Redshift sin servidor como objetivo
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 Creación de los roles de IAM para usar con la AWS CLI y la API de 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 COLUMNcolumn 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:
-
AWS DMS copia los datos del origen a los archivos .csv en el servidor de replicación.
-
AWS DMS utiliza el AWS SDK para copiar los archivos .csv en un bucket de S3 en la cuenta.
-
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:
-
Utilice la opción siguiente al ejecutar el comando de
create-endpoint
utilizando la AWS CLI.--redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "
your-kms-key-ARN
"}'Aquí,
está el nombre de recurso de Amazon (ARN) para su clave de KMS. Para obtener más información, consulte Uso de una clave de cifrado de datos y un bucket de Amazon S3 como almacenamiento intermedio.your-kms-key-ARN
-
Establezca el atributo de conexión adicional
encryptionMode
al valorSSE_KMS
y el atributo de conexión adicionalserverSideEncryptionKmsKeyId
al ARN de su clave de KMS. Para obtener más información, consulte Configuración de puntos de conexión al utilizar Amazon Redshift como destino para AWS DMS.
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.
Creación de un rol de IAM con la política administrada por AWS requerida
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Seleccione Roles en el panel de navegación. Se abre la página Roles.
-
Elija Crear rol. Se abre la página Create role (Crear rol).
-
Con el servicio de AWS elegido como entidad de confianza, elija DMS como servicio para usar el rol.
-
Elija Siguiente: permisos. Aparece la página Attach permissions policies (Asociar políticas de permisos).
-
Busque y seleccione la política
AmazonDMSRedshiftS3Role
. -
Elija Siguiente: etiquetas. Aparece la página Add tags (Agregar etiquetas). A continuación, puede añadir las etiquetas que desee.
-
Elija Next: Review (Siguiente: Revisar) y revise los resultados.
-
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
.
Creación de 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 Configuración de una clave de cifrado y especificación de permisos de AWS KMS.
-
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
. -
Para cambiar la Región de AWS, utilice el Selector de regiones ubicado en la esquina superior derecha de la página.
-
En el panel de navegación, elija Claves administradas por el cliente.
-
Elija Create key. Se abrirá la página Configure key (Configurar clave).
-
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.
-
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).
-
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. -
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.
-
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.
-
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.
-
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
. -
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
yUser1
) 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 } } } ]
-
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 |
---|---|
|
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: |
|
Especifica el número de subprocesos utilizados para cargar un único archivo. Valor predeterminado: 10 Valores válidos: 1-64 Ejemplo: |
|
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: |
|
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 Valor predeterminado: vacío Valores válidos: “ Ejemplo: |
|
Especifica el formato de hora. Es una entrada de cadena que está vacía de forma predeterminada. El argumento Valor predeterminado: 10 Valores válidos: “ Ejemplo: |
|
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: |
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: |
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: |
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: |
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. notaTambién puede usar el comando Valor predeterminado: Valores válidos: Ejemplo: |
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: |
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
--passwordyour-password
--server-nameyour-server-name
--port 5439 --database-nameyour-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
--passwordyour-password
--server-nameyour-server-name
--port 5439 --database-nameyour-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íticaAmazonDMSRedshiftS3Role
, este valor debe tener un prefijo dedms-
, 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íticaAmazonDMSRedshiftS3Role
. 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 comandocreate-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
--passwordyour-password
--server-nameyour-server-name
--port 5439 --database-nameyour-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
enfalse
al usar la configuración de tareasParallelLoadThreads
. 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 estrue
. -
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 cambios (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 deParallelApplyThreads
.
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 |
HORA |
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 Creación de los roles de IAM para usar con la AWS CLI y la API de AWS DMS.
Limitaciones al usar Amazon Redshift sin servidor como destino
El uso de Redshift sin servidor como objetivo tiene las siguientes limitaciones:
AWS DMS solo es compatible con Amazon Redshift sin servidor como punto de conexión en las regiones que admiten Amazon Redshift sin servidor. Para obtener información sobre las regiones compatibles con Amazon Redshift sin servidor, consulte la API de Redshift sin servidor en el tema Puntos de conexión y cuotas de Amazon Redshift de la Referencia general de AWS.
Cuando utilice el enrutamiento de VPC mejorado, asegúrese de crear un punto de conexión de Amazon S3 en la misma VPC que el clúster de Redshift sin servidor o aprovisionado de Redshift. Para obtener más información, consulte Uso del enrutamiento de la VPC mejorado con Amazon Redshift como destino para AWS Database Migration Service.
AWS DMS sin servidor no admite con Amazon Redshift sin servidor como destino.