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:
Temas
- Requisitos previos para utilizar una base de datos de Amazon Redshift como destino deAWS Database Migration Service
- Privilegios necesarios para usar Redshift como objetivo
- Limitaciones al uso de Amazon Redshift como objetivo paraAWS Database Migration Service
- Configuración de una base de datos de Amazon Redshift como destino paraAWS Database Migration Service
- Uso de un enrutamiento de VPC mejorado con Amazon Redshift como objetivo paraAWS Database Migration Service
- Creación y uso deAWS KMS claves para cifrar los datos de destino de Amazon Redshift
- Configuración de endpoint cuando se utiliza Amazon Redshift como destino paraAWS DMS
- Uso de una clave de cifrado de datos y un bucket de Amazon S3 como almacenamiento intermedio
- Configuración de tareas multiproceso para Amazon Redshift
- Tipos de datos de destino para Amazon Redshift
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 en
true
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 una
list-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 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. 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:
-
AWS DMS copia los datos del origen a los archivos .csv en el servidor de replicación.
-
AWS DMSusa elAWS SDK para copiar los archivos.csv en un bucket de S3 de tu cuenta.
-
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:
-
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 endpoint cuando se utiliza Amazon Redshift como destino paraAWS DMS.
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
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Seleccione Roles (Roles) en el panel de navegación. Se abre la página Roles.
-
Elija Create role (Crear rol). Se abre la página Create role (Crear rol).
-
Con el AWSservicio elegido como entidad de confianza, elija DMS como el servicio para usar el rol.
-
Elija Next: Permissions (Siguiente: permisos). Aparece la página Attach permissions policies (Asociar políticas de permisos).
-
Busque y seleccione la política
AmazonDMSRedshiftS3Role
. -
Elija Next: Tags (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 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
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 losAWS servicios, 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.
-
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 ejemplo
DMS-Redshift-endpoint-access-role
). -
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
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 } } } ]
-
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 '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
En la siguiente tabla, se muestra la configuración de los endpoints 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 utilice para transferir datos a Amazon Redshift. Valor predeterminado: 32768 KB (32 MB) Valores válidos: 1 a 1 048 576 Ejemplo: |
|
Especifica el número de subprocesos utilizados para cargar un único archivo. Valor predeterminado: 10 Valores válidos: de 1 a 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 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: |
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 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. También puede usar el Valor predeterminado: Valores válidos: Ejemplo: |
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: |
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 especificar
MapBooleanAsBoolean
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
--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 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
--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 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.
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íticaAmazonDMSRedshiftS3Role
. 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 comandocreate-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
--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 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 el
enableParallelBatchInMemoryCSVFiles
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 estrue
. -
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).
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 de
ParallelApplyBufferSize
sea al menos dos veces (el doble o más) el número deParallelApplyThreads
.
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.
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. |