Utilizar um banco de dados compatível com MySQL 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 um banco de dados compatível com MySQL como destino do AWS Database Migration Service

Você pode migrar dados para qualquer banco de dados compatível com MySQL usando AWS DMS, de qualquer um dos mecanismos de dados de origem compatíveis. AWS DMS Se você estiver migrando para um banco de dados local compatível com MySQL, é AWS DMS necessário que seu mecanismo de origem resida no ecossistema. AWS O mecanismo pode estar em um serviço AWS gerenciado, como Amazon RDS, Amazon Aurora ou Amazon S3. Ou o mecanismo pode estar em um banco de dados autogerenciado no Amazon EC2.

Você pode usar o SSL para criptografar conexões entre o endpoint compatível com MySQL e a instância de replicação. Para obter mais informações sobre o uso do SSL com um endpoint compatível com MySQL, consulte Usando SSL com AWS Database Migration Service.

Para obter informações sobre as versões do MySQL que oferecem AWS DMS suporte como destino, consulte. Metas para AWS DMS

Você pode usar os seguintes bancos de dados compatíveis com MySQL como destinos para: AWS DMS

  • MySQL Community Edition

  • MySQL Standard Edition

  • MySQL Enterprise Edition

  • MySQL Cluster Carrier Grade Edition

  • MariaDB Community Edition

  • MariaDB Enterprise Edition

  • MariaDB Column Store

  • Amazon Aurora MySQL

nota

Independentemente do mecanismo de armazenamento de origem (MyISAM, MEMÓRIA, etc.), o AWS DMS cria uma tabela de destino compatível com MySQL como InnoDB por padrão.

Se precisar de uma tabela em um mecanismo de armazenamento diferente do InnoDB, será possível criar manualmente a tabela no destino compatível com MySQL e migrá-la utilizando a opção Não fazer nada. Para ter mais informações, consulte Configurações de tarefa de carregamento completo.

Para obter mais detalhes sobre como trabalhar com bancos de dados compatíveis com MySQL como destino para o AWS DMS, consulte as seguintes seções.

Usando qualquer banco de dados compatível com MySQL como alvo para AWS Database Migration Service

Antes de começar a trabalhar com um banco de dados compatível com MySQL como destino do AWS DMS, confirme se você concluiu os seguintes pré-requisitos:

  • Forneça uma conta de usuário AWS DMS que tenha privilégios de leitura/gravação no banco de dados compatível com MySQL. Para criar os privilégios necessários, execute os seguintes comandos.

    CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>'; GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON <schema>.* TO '<user acct>'@'%'; GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
  • Durante a fase de migração de carga máxima, você precisa desativar as chaves externas nas suas tabelas de destino. Para desativar as verificações de chave estrangeira em um banco de dados compatível com MySQL durante um carregamento completo, você pode adicionar o seguinte comando à seção Atributos de conexão extra do AWS DMS console do seu endpoint de destino.

    Initstmt=SET FOREIGN_KEY_CHECKS=0;
  • Defina o parâmetro local_infile = 1 do banco de dados para permitir que o AWS DMS carregue dados no banco de dados de destino.

Limitações no uso de um banco de dados compatível com MySQL como alvo para AWS Database Migration Service

Ao usar um banco de dados MySQL como destino, AWS DMS não oferece suporte ao seguinte:

  • As instruções da linguagem de definição de dados (DDL) TRUNCATE PARTITION, DROP TABLE e RENAME TABLE.

  • Uso de uma declaração ALTER TABLE table_name ADD COLUMN column_name para adicionar colunas ao início ou meio de uma tabela.

  • Ao carregar dados em um destino compatível com MySQL em uma tarefa de carregamento total, AWS DMS não relata erros causados por restrições nos registros de tarefas, o que pode causar erros de chave duplicados ou incompatibilidades com o número de registros. Isso é causado pela forma como o MySQL trata dados locais com o comando LOAD DATA. Faça o seguinte durante a fase de carga máxima:

    • Desativar restrições

    • Use a AWS DMS validação para garantir que os dados sejam consistentes.

  • Quando você atualiza o valor de uma coluna para seu valor existente, os bancos de dados compatíveis com MySQL retornam um aviso 0 rows affected. Embora esse comportamento não seja tecnicamente um erro, ele é diferente de como a situação é controlada por outros mecanismos de banco de dados. Por exemplo, o Oracle executa uma atualização de uma linha. Para bancos de dados compatíveis com MySQL, AWS DMS gera uma entrada na tabela de controle awsdms_apply_exceptions e registra o seguinte aviso.

    Some changes from the source database had no impact when applied to the target database. See awsdms_apply_exceptions table for details.
  • O Aurora Sem Servidor está disponível como destino para o Amazon Aurora versão 2, compatível com o MySQL versão 5.7. (Selecione o Aurora Sem Servidor versão 2.07.1 para poder utilizar o Aurora Sem Servidor compatível com o MySQL 5.7.) Para obter mais informações sobre o Aurora Serverless, consulte Como usar o Aurora Serverless v2 no Guia do usuário do Amazon Aurora.

  • AWS DMS não suporta o uso de um endpoint de leitura para o Aurora ou o Amazon RDS, a menos que as instâncias estejam no modo gravável, ou seja, read_only os parâmetros innodb_read_only e estejam definidos como ou. 0 OFF Para obter mais informações sobre como utilizar o Amazon RDS e o Aurora como destinos, consulte:

Configurações de endpoint ao usar um banco de dados compatível com MySQL como destino para AWS DMS

É possível utilizar as configurações do endpoint para configurar o destino compatível com o MySQL de forma semelhante à utilização de atributos de conexão adicional. Você especifica as configurações ao criar o endpoint de destino usando o AWS DMS console ou usando o create-endpoint comando no AWS CLI, com a sintaxe --my-sql-settings '{"EndpointSetting": "value", ...}' JSON.

A tabela a seguir mostra as configurações de endpoints que é possível utilizar com o MySQL como destino.

Nome Descrição

TargetDbType

Especifica o destino para onde devem migrar as tabelas de origem, seja para um único banco de dados ou vários. Se você especificarSPECIFIC_DATABASE, precisará especificar o nome do banco de dados, AWS CLI seja ao usar AWS Management Console o.

Valor padrão: MULTIPLE_DATABASES

Valores válidos: {SPECIFIC_DATABASE, MULTIPLE_DATABASES}

Exemplo: --my-sql-settings '{"TargetDbType": "MULTIPLE_DATABASES"}'

ParallelLoadThreads

Melhora o desempenho do carregamento de dados no banco de dados de destino compatível com MySQL. Especifica quantos threads devem ser usados para carregar dados no banco de dados de destino compatível com MySQL. Configurar um grande número de threads pode ter um efeito adverso no desempenho do banco de dados, pois cada thread requer uma conexão separada.

Valor padrão: 1

Valores válidos: 1 a 5

Exemplo: --my-sql-settings '{"ParallelLoadThreads": 1}'

AfterConnectScript

Especifica um script para ser executado imediatamente após a conexão do AWS DMS com o endpoint.

Por exemplo, é possível especificar que o destino compatível com MySQL deve converter as instruções recebidas no conjunto de caracteres latin1, que é o padrão compilado no conjunto de caracteres do banco de dados. Esse parâmetro geralmente melhora o desempenho ao converter de clientes UTF8.

Exemplo: --my-sql-settings '{"AfterConnectScript": "SET character_set_connection='latin1'"}'

MaxFileSize

Especifica o tamanho máximo (em KB) de um arquivo .csv utilizado para transferir dados para um banco de dados compatível com o MySQL.

Valor padrão: 32768 KB (32 MB)

Valores válidos: 1 a 1.048.576

--my-sql-settings '{"MaxFileSize": 512}'

CleanSrcMetadataOnMismatch

Limpa e recria as informações dos metadados da tabela na instância de replicação quando ocorre uma incompatibilidade. Por exemplo, em uma situação em que a execução de uma instrução de DDL alternativo em uma tabela pode resultar em informações diferentes sobre a tabela armazenada em cache na instância de replicação. Booliano.

Valor padrão: false

Exemplo: --my-sql-settings '{"CleanSrcMetadataOnMismatch": false}'

Também é possível utilizar atributos de conexão adicionais para configurar o banco de dados de destino compatível com MySQL.

A tabela a seguir mostra os atributos de conexão adicionais que podem ser utilizados com o MySQL como origem.

Nome Descrição

Initstmt=SET FOREIGN_KEY_CHECKS=0;

Desabilita as verificações de chaves estrangeiras.

Exemplo: --extra-connection-attributes "Initstmt=SET FOREIGN_KEY_CHECKS=0;"

Initstmt=SET time_zone

Especifica o fuso horário para o banco de dados de destino compatível com MySQL.

Valor padrão: UTC

Valores válidos: os nomes dos fusos horários disponíveis no banco de dados MySQL de destino.

Exemplo: --extra-connection-attributes "Initstmt=SET time_zone=US/Pacific;"

Como alternativa, é possível utilizar o parâmetro AfterConnectScript do comando --my-sql-settings para desativar as verificações de chave estrangeira e especificar o fuso horário do banco de dados.

Tipos de dados de destino do MySQL

A tabela a seguir mostra os tipos de dados de destino do banco de dados MySQL que são suportados durante o uso AWS DMS e o mapeamento padrão dos tipos de AWS DMS dados.

Para obter informações adicionais sobre AWS DMS os tipos de dados, consulteTipos de dados do AWS Database Migration Service.

AWS DMS tipos de dados

Tipos de dados do MySQL

BOOLEAN

BOOLEAN

BYTES

Se o tamanho for de 1 a 65.535, utilize VARBINARY (tamanho).

Se o tamanho for de 65.536 a 2.147.483.647, utilize LONGLOB.

DATA

DATA

TIME

TIME

TIMESTAMP

“Se a escala for => 0 e =< 6, use: DATETIME (escala)

Se a escala for => 7 e =< 9, use: VARCHAR (37)”

INT1

TINYINT

INT2

SMALLINT

INT4

INTEGER

INT8

BIGINT

NUMERIC

DECIMAL (p,s)

REAL4

FLOAT

REAL8

DOUBLE PRECISION

STRING

Se o tamanho for de 1 a 21.845, utilize VARCHAR (tamanho).

Se o tamanho for de 21.846 a 2.147.483.647, utilize LONGTEXT.

UINT1

UNSIGNED TINYINT

UINT2

UNSIGNED SMALLINT

UINT4

UNSIGNED INTEGER

UINT8

UNSIGNED BIGINT

WSTRING

Se o tamanho for de 1 a 32.767, utilize VARCHAR (tamanho).

Se o tamanho for de 32.768 a 2.147.483.647, utilize LONGTEXT.

BLOB

Se o tamanho for de 1 a 65.535, utilize BLOB.

Se o tamanho for de 65.536 a 2.147.483.647, utilize LONGBLOB.

Se o tamanho for 0, utilize LONGBLOB (suporte pleno ao tipo LOB).

NCLOB

Se o tamanho for de 1 a 65.535, use TEXT.

Se o tamanho for de 65.536 a 2.147.483.647, utilize LONGTEXT com ucs2 para CHARACTER SET.

Se o tamanho for 0, utilize LONGTEXT (suporte pleno ao tipo LOB) e ucs2 para CHARACTER SET.

CLOB

Se o tamanho for de 1 a 65.535, use TEXT.

Se o tamanho for de 65.536 a 2147483647, utilize LONGTEXT.

Se o tamanho for 0, utilize LONGTEXT (suporte pleno ao tipo LOB).