Utilizar o Babelfish como destino do AWS Database Migration Service - AWS Database Migration Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Utilizar o Babelfish como destino do AWS Database Migration Service

É possível migrar dados de um banco de dados de origem Microsoft SQL Server para um destino Babelfish utilizando o AWS Database Migration Service.

O Babelfish for Aurora PostgreSQL amplia seu banco de dados Amazon Aurora, edição compatível com PostgreSQL, com a capacidade de aceitar conexões de banco de dados provenientes de clientes Microsoft SQL Server. Fazer isso permite que aplicações originalmente criadas para o SQL Server funcionem diretamente com o Aurora PostgreSQL, com poucas alterações de código em comparação com uma migração tradicional e sem alterar drivers de bancos de dados.

Para obter informações sobre as versões do Babelfish compatíveis com o AWS DMS como destino, consulte Metas para AWS DMS. As versões anteriores do Babelfish no Aurora PostgreSQL exigem um upgrade antes de utilizar o endpoint do Babelfish.

nota

O endpoint de destino do Aurora PostgreSQL é a forma preferida de migrar dados para o Babelfish. Para obter mais informações, consulte Utilizar o Babelfish para Aurora PostgreSQL como destino.

Para obter informações sobre como utilizar o Babelfish como um endpoint de banco de dados, consulte Babelfish para Aurora PostgreSQL no Guia do usuário do Amazon Aurora para Aurora

Pré-requisitos para a utilização do Babelfish como destino do AWS DMS

Crie as tabelas antes de migrar os dados para garantir que o AWS DMS utilize os tipos de dados e metadados de tabela corretos. Se você não criar as tabelas no destino antes de executar a migração, o AWS DMS poderá criar as tabelas com tipos de dados e permissões incorretos. Por exemplo, o AWS DMS cria uma coluna de timestamp como binária(8) em vez disso, e não fornece a funcionalidade de timestamp/rowversion esperada.

Como preparar e criar as tabelas antes da migração
  1. Execute as instruções DDL de criação de tabela que incluam quaisquer restrições exclusivas, chaves primárias ou restrições padrão.

    Não inclua restrições de chave estrangeira nem instruções DDL para objetos, como visualizações, procedimentos armazenados, perfis ou acionadores. É possível aplicá-las depois de migrar o banco de dados de origem.

  2. Identifique quaisquer colunas de identidade, colunas computadas ou colunas contendo tipos de dados rowversion ou timestamp nas tabelas. Crie as regras de transformação necessárias para lidar com problemas conhecidos ao executar a tarefa de migração. Para obter mais informações, consulte, Regras de transformação e ações.

  3. Identifique colunas com tipos de dados não compatíveis com o Babelfish. Altere as colunas afetadas na tabela de destino para utilizar os tipos de dados compatíveis ou crie uma regra de transformação que os remova durante a tarefa de migração. Para obter mais informações, consulte, Regras de transformação e ações.

    A tabela a seguir lista os tipos de dados de origem não compatíveis com o Babelfish e o tipo de dados de destino recomendado correspondente a ser utilizado.

    Tipo de dados de origem

    Tipo de dados do Babelfish recomendado

    HEIRARCHYID

    NVARCHAR(250)

    GEOMETRY

    VARCHAR(MAX)

    GEOGRAPHY

    VARCHAR(MAX)

Como definir o nível de unidades de capacidade do Aurora (ACUs) para o banco de dados de origem do Aurora PostgreSQL Sem Servidor V2

É possível melhorar o desempenho da tarefa de migração do AWS DMS antes de executá-la definindo o valor mínimo de ACU.

Depois de executar a tarefa de migração do AWS DMS, é possível redefinir o valor mínimo de ACUs como um nível razoável para o banco de dados de origem do Aurora PostgreSQL Sem Servidor V2.

Requisitos de segurança ao utilizar o Babelfish como destino do AWS Database Migration Service

Veja a seguir a descrição dos requisitos de segurança para utilizar o AWS DMS com um destino do Babelfish:

  • O nome de usuário do administrador (o usuário administrador) utilizado para criar o banco de dados.

  • Login e usuário do PSQL com permissões suficientes para SELECT, INSERT, UPDATE, DELETE e REFERENCES.

Permissões de usuário para utilizar o Babelfish como destino do AWS DMS

Importante

Para fins de segurança, a conta de usuário utilizada para a migração de dados deve ser um usuário registrado em qualquer banco de dados Babelfish que você utilize como destino.

O endpoint de destino do Babelfish requer permissões mínimas de usuário para executar uma migração do AWS DMS.

Como criar um login e um usuário do Transact-SQL (T-SQL) com poucos privilégios
  1. Crie um login e uma senha a serem utilizados ao se conectar ao servidor.

    CREATE LOGIN dms_user WITH PASSWORD = 'password'; GO
  2. Crie o banco de dados virtual para o cluster do Babelfish.

    CREATE DATABASE my_database; GO
  3. Crie o usuário T-SQL para o banco de dados de destino.

    USE my_database GO CREATE USER dms_user FOR LOGIN dms_user; GO
  4. Para cada tabela no banco de dados Babelfish, permissões de GRANT para as tabelas.

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

Limitações da utilização do Babelfish como destino do AWS Database Migration Service

As seguintes limitações se aplicam à utilização de um banco de dados Babelfish como destino do AWS DMS:

  • Somente o modo de preparação de tabela “Não executar nenhuma ação” é compatível.

  • O tipo de dados ROWVERSION exige uma regra de mapeamento de tabela que remove o nome da coluna da tabela durante a tarefa de migração.

  • O tipo de dados sql_variant não é compatível.

  • O modo LOB completo é compatível. A utilização do SQL Server como um endpoint de origem exige a configuração ForceFullLob=True do Atributo de conexão do endpoint do SQL Server definida para que os LOBs sejam migrados para o endpoint de destino.

  • As configurações da tarefa de replicação têm as seguintes limitações:

    { "FullLoadSettings": { "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, }. }
  • Os tipos de dados TIME(7), DATETIME2(7) e DATETIMEOFFSET(7) no Babelfish limitam o valor de precisão da parte de segundos do tempo a seis dígitos. Considere utilizar um valor de precisão de seis para a tabela de destino ao utilizar esses tipos de dados. Nas versões 2.2.0 e superiores do Babelfish, ao utilizar TIME(7) e DATETIME2(7), o sétimo dígito de precisão é sempre zero.

  • No modo DO_NOTHING, o DMS verifica se a tabela já existe. Se a tabela não existir no esquema de destino, o DMS criará a tabela com base na definição da tabela de origem e mapeará todos os tipos de dados definidos pelo usuário para o tipo de dados base.

  • Uma tarefa de migração do AWS DMS para um destino Babelfish não é compatível com tabelas que tenham colunas que utilizam os tipos de dados ROWVERSION ou TIMESTAMP. É possível utilizar uma regra de mapeamento de tabela que remove o nome da coluna da tabela durante o processo de transferência. No exemplo de regra de transformação a seguir, uma tabela nomeada Actor na origem é transformada para remover todas as colunas que começam com os caracteres Actor da tabela col no 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 tabelas com colunas de identidade ou computadas, em que as tabelas de destino utilizam nomes com maiúsculas e minúsculas, como Categorias, crie uma ação de regra de transformação que converta os nomes das tabelas em minúsculas para a tarefa do DMS. O exemplo a seguir mostra como criar a ação da regra de transformação, Colocar em letras minúsculas, utilizando o console do AWS DMS. Para obter mais informações, consulte Regras de transformação e ações.

    
                        Regra de transformação do Babelfish
  • Antes da versão 2.2.0 do Babelfish, o DMS limitava o número de colunas que você podia replicar para um endpoint de destino do Babelfish a vinte colunas. Com o Babelfish 2.2.0, o limite aumentou para cem colunas. Mas com as versões 2.4.0 e superiores do Babelfish, o número de colunas que é possível replicar aumenta novamente. É possível executar o exemplo de código a seguir no banco de dados SQL Server para determinar quais tabelas são muito longas.

    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 dados de destino do Babelfish

A tabela a seguir mostra os tipos de dados de destino do Babelfish que são compatíveis ao utilizar o AWS DMS e o mapeamento padrão dos tipos de dados do AWS DMS.

Para obter mais informações sobre os tipos de dados do AWS DMS, consulte Tipos de dados do AWS Database Migration Service.

Tipo de dados do AWS DMS

Tipo de dados do Babelfish

BOOLEAN

TINYINT

BYTES

VARBINARY(tamanho)

DATE

DATE

TIME

TIME

INT1

SMALLINT

INT2

SMALLINT

INT4

INT

INT8

BIGINT

NUMERIC

NUMERIC(p,s)

REAL4

REAL

REAL8

FLOAT

STRING

Se a coluna for de data ou hora, faça o seguinte:

  • No SQL Server 2008 e superior, utilize DATETIME2.

  • Para versões anteriores, se a escala for menor ou igual a 3, utilize DATETIME. Em todos os demais casos, utilize VARCHAR (37).

Se a coluna não for uma data ou hora, utilize VARCHAR (tamanho).

UINT1

TINYINT

UINT2

SMALLINT

UINT4

INT

UINT8

BIGINT

WSTRING

NVARCHAR(tamanho)

BLOB

VARBINARY(máximo)

Para utilizar esse tipo de dados com o DMS, ative a utilização de BLOBs em uma tarefa específica. O DMS é compatível com os tipos de dados BLOB somente em tabelas que possuem uma chave primária.

CLOB

VARCHAR(máximo)

Para utilizar esse tipo de dados com o DMS, ative a utilização de CLOBs em uma tarefa específica.

NCLOB

NVARCHAR(máximo)

Para utilizar esse tipo de dados com o DMS, ative a utilização de NCLOBs em uma tarefa específica. Durante a CDC, o DMS é compatível com os tipos de dados NCLOB somente em tabelas que incluem uma chave primária.