Uso de Babelfish como objetivo para AWS Database Migration Service - AWS Database Migration Service

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

Uso de Babelfish como objetivo para AWS Database Migration Service

Puede migrar datos de una base de datos de origen de Microsoft SQL Server a un destino de Babelfish mediante AWS Database Migration Service.

Babelfish for Aurora PostgreSQL amplía la base de datos de edición compatible con Amazon Aurora PostgreSQL con la capacidad de aceptar conexiones de bases de datos de clientes de Microsoft SQL Server. Esto permite que las aplicaciones creadas originalmente para SQL Server funcionen directamente con Aurora PostgreSQL con pocos cambios de código en comparación con una migración tradicional y sin cambiar los controladores de base de datos.

Para obtener información sobre las versiones de Babelfish que AWS DMS admite como origen, consulte Objetivos para AWS DMS. Las versiones anteriores de Babelfish en Aurora PostgreSQL requieren una actualización antes de utilizar el punto de conexión de Babelfish.

nota

El punto de conexión de destino de Aurora PostgreSQL es la forma preferida de migrar datos a Babelfish. Para obtener más información, consulte Uso de Babelfish para Aurora PostgreSQL como destino.

Para obtener información sobre el uso de Babelfish como punto de conexión de la base de datos, consulte Babelfish para Aurora PostgreSQL en la Guía del usuario de Amazon Aurora para Aurora

Requisitos previos para utilizar Babelfish como destino para AWS DMS

Debe crear las tablas antes de migrar los datos para asegurarse de que AWS DMS utiliza los tipos de datos y los metadatos de las tablas correctos. Si no crea las tablas en el destino antes de ejecutar la migración, es posible que AWS DMS cree las tablas con permisos y tipos de datos incorrectos. Por ejemplo, AWS DMS crea una columna de marca temporal como binaria(8) en su lugar y no proporciona la funcionalidad de marca temporal o versión de fila esperada.

Para preparar y crear las tablas antes de la migración
  1. Ejecute las instrucciones DDL de creación de tablas que incluyan cualquier restricción única, claves principales o restricciones predeterminadas.

    No incluya restricciones de clave externa ni instrucciones DDL para objetos como vistas, procedimientos almacenados, funciones o desencadenadores. Puede aplicarlos después de migrar la base de datos de origen.

  2. Identifique las columnas de identidad, columnas calculadas o columnas que contengan tipos de datos de versión de fila o marca temporal para las tablas. A continuación, cree las reglas de transformación necesarias para gestionar los problemas conocidos al ejecutar la tarea de migración. Para obtener más información, consulte, Reglas y acciones de transformación.

  3. Identifique las columnas con tipos de datos que Babelfish no admite. A continuación, cambie las columnas afectadas de la tabla de destino para utilizar los tipos de datos compatibles o cree una regla de transformación que las elimine durante la tarea de migración. Para obtener más información, consulte, Reglas y acciones de transformación.

    En la siguiente tabla se muestran los tipos de datos de origen que Babelfish no admite y el correspondiente tipo de datos de destino que se recomienda utilizar.

    Tipo de datos de origen

    Tipo de datos de Babelfish recomendado

    HEIRARCHYID

    NVARCHAR(250)

    GEOMETRY

    VARCHAR(MAX)

    GEOGRAPHY

    VARCHAR(MAX)

Para establecer el nivel de unidades de capacidad de Aurora (ACU) para la base de datos de origen Aurora PostgreSQL sin servidor V2

Puede mejorar el rendimiento de la tarea de migración de AWS DMS antes de ejecutarla estableciendo el valor mínimo de ACU.

Tras ejecutar la tarea de migración de AWS DMS, puede restablecer el valor mínimo de las ACU a un nivel razonable para la base de datos de origen de Aurora PostgreSQL sin servidor V2.

Requisitos de seguridad al utilizar Babelfish como destino para AWS Database Migration Service

A continuación, se describen los requisitos de seguridad para utilizar AWS DMS con un destino de Babelfish:

  • El nombre de usuario del administrador (el usuario administrador) utilizado para crear la base de datos.

  • Inicio de sesión y usuario de PSQL con los permisos SELECT, INSERT, UPDATE, DELETE y REFERENCES suficientes.

Permisos de usuario para usar Babelfish como destino para AWS DMS

importante

Por motivos de seguridad, la cuenta de usuario utilizada para la migración de datos debe ser un usuario registrado en cualquier base de datos de Babelfish que utilice como destino.

El punto de conexión de destino de Babelfish requiere permisos de usuario mínimos para ejecutar una migración de AWS DMS.

Para crear un inicio de sesión y un usuario Transact-SQL (T-SQL) con pocos privilegios
  1. Cree un nombre de usuario y una contraseña para utilizarlos cuando se conecte al servidor.

    CREATE LOGIN dms_user WITH PASSWORD = 'password'; GO
  2. Cree la base de datos virtual para el clúster de Babelfish.

    CREATE DATABASE my_database; GO
  3. Cree el usuario de T-SQL para la base de datos de destino.

    USE my_database GO CREATE USER dms_user FOR LOGIN dms_user; GO
  4. CONCEDA permisos a las tablas para cada tabla de la base de datos de Babelfish.

    GRANT SELECT, DELETE, INSERT, REFERENCES, UPDATE ON [dbo].[Categories] TO dms_user;

Restricciones al uso de Babelfish como destino para AWS Database Migration Service

Cuando se utiliza una base de datos de Babelfish como destino para AWS DMS, se aplican las siguientes restricciones:

  • Solo se admite el modo de preparación de tablas “No hacer nada”.

  • El tipo de datos ROWVERSION requiere una regla de asignación de tablas que elimine el nombre de la columna de la tabla durante la tarea de migración.

  • No se admite el tipo de datos sql_variant.

  • Se admite el modo de LOB completo. El uso de SQL Server como punto de conexión de origen requiere que se establezca la configuración ForceFullLob=True del atributo de conexión del punto de conexión de SQL Server para poder migrar los LOB al punto de conexión de destino.

  • La configuración de las tareas de replicación presenta las siguientes limitaciones:

    { "FullLoadSettings": { "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, }. }
  • Los tipos de datos TIME(7), DATETIME2(7) y DATETIMEOFFSET(7) de Babelfish limitan el valor de precisión de la parte de segundos del tiempo a 6 dígitos. Considere la posibilidad de utilizar un valor de precisión de 6 para la tabla de destino cuando utilice estos tipos de datos. En las versiones 2.2.0 y superiores de Babelfish, cuando se utilizan TIME(7) y DATETIME2(7), el séptimo dígito de precisión es siempre cero.

  • En el modo DO_NOTHING, DMS comprueba si la tabla ya existe. Si la tabla no existe en el esquema de destino, DMS la crea en función de la definición de la tabla de origen y asigna cualquier tipo de datos definido por el usuario al tipo de datos base.

  • Una tarea de migración de AWS DMS a un destino de Babelfish no admite tablas que tengan columnas con los tipos de datos ROWVERSION o TIMESTAMP. Puede usar una regla de asignación de tablas que elimine el nombre de la columna de la tabla durante el proceso de transferencia. En el siguiente ejemplo de regla de transformación, se transforma una tabla denominada Actor en el origen para eliminar todas las columnas que empiecen por los caracteres col de la tabla de Actor en el destino.

    { "rules": [{ "rule-type": "selection",is "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }
  • Para las tablas con columnas de identidad o calculadas, en las que las tablas de destino utilizan nombres en mayúsculas y minúsculas, como Categorías, debe crear una acción de regla de transformación que convierta los nombres de las tablas a minúsculas para la tarea de DMS. En el siguiente ejemplo, se muestra cómo crear la acción de la regla de transformación, Convertir en minúsculas mediante la consola de AWS DMS. Para obtener más información, consulte Reglas y acciones de transformación.

    Regla de transformación de Babelfish
  • Antes de la versión 2.2.0 de Babelfish, DMS limitó el número de columnas que se podían replicar en un punto de conexión de destino de Babelfish a veinte (20) columnas. Con Babelfish 2.2.0, el límite aumentó a 100 columnas. Sin embargo, con las versiones 2.4.0 y superiores de Babelfish, el número de columnas que puede replicar vuelve a aumentar. Puede ejecutar el siguiente ejemplo de código en la base de datos de SQL Server para determinar qué tablas son demasiado largas.

    USE myDB; GO DECLARE @Babelfish_version_string_limit INT = 8000; -- Use 380 for Babelfish versions before 2.2.0 WITH bfendpoint AS ( SELECT [TABLE_SCHEMA] ,[TABLE_NAME] , COUNT( [COLUMN_NAME] ) AS NumberColumns , ( SUM( LEN( [COLUMN_NAME] ) + 3) + SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 ) + LEN( TABLE_SCHEMA ) + 3 + 12 -- INSERT INTO string + 12) AS InsertIntoCommandLength -- values string , CASE WHEN ( SUM( LEN( [COLUMN_NAME] ) + 3) + SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 ) + LEN( TABLE_SCHEMA ) + 3 + 12 -- INSERT INTO string + 12) -- values string >= @Babelfish_version_string_limit THEN 1 ELSE 0 END AS IsTooLong FROM [INFORMATION_SCHEMA].[COLUMNS] GROUP BY [TABLE_SCHEMA], [TABLE_NAME] ) SELECT * FROM bfendpoint WHERE IsTooLong = 1 ORDER BY TABLE_SCHEMA, InsertIntoCommandLength DESC, TABLE_NAME ;

Tipos de datos de destino para Babelfish

La siguiente tabla muestra los tipos de datos de destino de Babelfish 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

Tipo de datos de Babelfish

BOOLEANO

TINYINT

BYTES

VARBINARY (longitud)

DATE

DATE

TIME

TIME

INT1

SMALLINT

INT2

SMALLINT

INT4

INT

INT8

BIGINT

NUMERIC

NUMERIC (p,s)

REAL4

REAL

REAL8

FLOAT

STRING

Si la columna es una columna de fecha u hora, haga lo siguiente:

  • Para SQL Server 2008 y superiores, use DATETIME2.

  • Para versiones anteriores, si la escala es 3 o inferior, utilice DATETIME. En el resto de casos, utilice VARCHAR (37).

Si la columna no es una columna de fecha o de hora, utilice VARCHAR (longitud).

UINT1

TINYINT

UINT2

SMALLINT

UINT4

INT

UINT8

BIGINT

WSTRING

NVARCHAR(length)

BLOB

VARBINARY (máx.)

Para utilizar este tipo de datos con DMS, debe habilitar el uso de BLOB para una tarea específica. DMS solo es compatible con tipos de datos BLOB en las tablas que incluyen una clave principal.

CLOB

VARCHAR (máx.)

Para utilizar este tipo de datos con DMS, debe habilitar el uso de CLOB para una tarea específica.

NCLOB

NVARCHAR (máx.)

Para utilizar este tipo de datos con DMS, debe habilitar el uso de NCLOB para una tarea específica. En la CDC, DMS admite tipos de datos NCLOB solo en las tablas que incluyan una clave principal.