View a markdown version of this page

Utilizzo di un MySQL-compatible database come destinazione per AWS Database Migration Service - AWS Database Migration Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di un MySQL-compatible database come destinazione per AWS Database Migration Service

Puoi migrare i dati su qualsiasi MySQL-compatible database utilizzando AWS DMS, da uno qualsiasi dei motori di dati di origine AWS DMS supportati. Se si esegue la migrazione a un MySQL-compatible database locale, è AWS DMS necessario che il motore di origine risieda all'interno dell'ecosistema. AWS Il motore può essere su un servizio AWS gestito come Amazon RDS, Amazon Aurora o Amazon S3. In alternativa, il motore può trovarsi su un database autogestito in Amazon EC2.

Puoi utilizzare SSL per crittografare le connessioni tra l'endpoint e l'istanza di replica. MySQL-compatible Per ulteriori informazioni sull'utilizzo di SSL con un endpoint, consulta. MySQL-compatible Utilizzo di SSL con AWS Database Migration Service

Per informazioni sulle versioni di MySQL supportate come AWS DMS destinazione, vedere. Obiettivi per AWS DMS

È possibile utilizzare i seguenti MySQL-compatible database come destinazioni per: 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

Indipendentemente dal motore di archiviazione di origine (MyISAM, MEMORY e così via) AWS DMS , crea MySQL-compatible una tabella di destinazione come tabella InnoDB per impostazione predefinita.

Se hai bisogno di una tabella in un motore di archiviazione diverso da InnoDB, puoi creare manualmente la tabella sulla MySQL-compatible destinazione e migrare la tabella utilizzando l'opzione Do nothing. Per ulteriori informazioni, consulta Full-load impostazioni delle attività.

Per ulteriori dettagli sull'utilizzo di un MySQL-compatible database come destinazione AWS DMS, consultate le seguenti sezioni.

Utilizzo di qualsiasi MySQL-compatible database come destinazione per AWS Database Migration Service

Prima di iniziare a utilizzare un MySQL-compatible database come destinazione per AWS DMS, assicurati di aver completato i seguenti prerequisiti:

  • Fornisci un account utente con AWS DMS read/write privilegi per il MySQL-compatible database. Per creare i privilegi necessari, esegui i seguenti comandi.

    CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>'; GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT, CREATE TEMPORARY TABLES ON <schema>.* TO '<user acct>'@'%'; GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
  • Durante la fase di migrazione del caricamento completo, devi disabilitare le chiavi esterne sulle tabelle di destinazione. Per disabilitare il controllo delle chiavi esterne su un MySQL-compatible database durante un caricamento completo, puoi aggiungere il seguente comando alla sezione Attributi di connessione aggiuntivi della AWS DMS console per l'endpoint di destinazione.

    Initstmt=SET FOREIGN_KEY_CHECKS=0;
  • Imposta il parametro del database local_infile = 1 per consentire a AWS DMS di caricare i dati nel database di destinazione.

  • Concedi i seguenti privilegi se utilizzi le valutazioni MySQL-specific premigratorie.

    grant select on mysql.user to <dms_user>; grant select on mysql.db to <dms_user>; grant select on mysql.tables_priv to <dms_user>; grant select on mysql.role_edges to <dms_user> #only for MySQL version 8.0.11 and higher

Considerazioni sui target Aurora MySQL 8.4

Aurora MySQL 8.4 introduce modifiche di sicurezza che possono influire sulla connettività degli endpoint di destinazione. AWS DMS Leggi quanto segue prima di aggiornare il tuo target Aurora MySQL alla versione 8.4.

Applicazione del protocollo TLS

Aurora MySQL 8.4 è impostato su come impostazione ON predefinita, il che significa che tutte require_secure_transport le connessioni devono utilizzare TLS. Se l'endpoint di AWS DMS destinazione si connette ad Aurora MySQL 8.4 e la modalità SSL è impostata su nessuna, le connessioni verranno rifiutate. Se la modalità SSL dell'endpoint è impostata su Nessuno, riceverai il seguente errore:. MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON Imposta la modalità SSL dell'endpoint su verify-ca o verify-full. Entrambe le modalità richiedono un certificato CA. In alternativa, imposta su require_secure_transport OFF nel gruppo di parametri del cluster Aurora per consentire connessioni non crittografate.

Nota

Aurora MySQL 8.4 supporta solo le suite di crittografia GCM per TLS 1.2. CBC-mode Tutti i codici sono stati rimossi. AWS DMS utilizza TLS 1.2 per gli endpoint MySQL e Aurora MySQL e negozierà automaticamente un codice GCM supportato. Se disponi di configurazioni di cifratura personalizzate, verifica che includano una delle seguenti cifre supportate:,, o. ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384

Nota

AWS DMS non supporta TLS 1.3 per endpoint MySQL. Ciò non influisce sulla connettività ad Aurora MySQL 8.4, poiché Aurora MySQL 8.4 continua a supportare TLS 1.2.

Autenticazione (Aurora MySQL e RDS per MySQL 8.4)

Aurora MySQL 8.4 sostituisce il parametro con, che per impostazione predefinita è. default_authentication_plugin authentication_policy *:caching_sha2_password Gli utenti del database esistenti mantengono il plug-in di autenticazione corrente dopo l'aggiornamento. Se crei nuovi utenti dell' AWS DMS endpoint dopo l'aggiornamento, questi verranno utilizzati per impostazione caching_sha2_password predefinita, a meno che non lo impostiate *:mysql_native_password nel gruppo authentication_policy di parametri del cluster.

Reimpostazione della password dell'utente principale

Dopo l'aggiornamento ad Aurora MySQL 8.4, la reimpostazione della password dell'utente principale tramite la Console di gestione AWS CLI o tramite la rotazione di Secrets Manager imposta il plug-in di autenticazione dell'utente principale sul valore predefinito definito dal parametro. authentication_policy Se authentication_policy è impostato sul valore predefinito (*:caching_sha2_password), il plug-in di autenticazione dell'utente principale cambia da a alla successiva reimpostazione della password. mysql_native_password caching_sha2_password

Se l'endpoint di AWS DMS destinazione utilizza l'account utente principale, verifica la connettività dopo la reimpostazione della password. Per evitare modifiche al plug-in di autenticazione, procedi nel seguente modo:

  • Imposta authentication_policy su *:mysql_native_password nel gruppo di parametri del cluster prima di reimpostare la password, oppure

  • Crea un utente AWS DMS endpoint dedicato con un plug-in di autenticazione specificato in modo esplicito (consigliato). Ad esempio: CREATE USER 'dms_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

Per ulteriori informazioni sulle modifiche alla sicurezza di Aurora MySQL 8.4, consulta Sicurezza con Amazon Aurora MySQL e gestione delle password con Amazon Aurora e Secrets Manager nella Guida per l'utente di Amazon Aurora. Per informazioni sui problemi noti del plug-in di autenticazione, consulta Plugin di autenticazione nella Amazon RDS User Guide.

Limitazioni all'uso di un MySQL-compatible database come destinazione per AWS Database Migration Service

Quando si utilizza un database MySQL come destinazione AWS DMS , non supporta quanto segue:

  • Le istruzioni DDL (Data Definition Language) TRUNCATE PARTITION, DROP TABLE e RENAME TABLE.

  • L'utilizzo di un'istruzione ALTER TABLE table_name ADD COLUMN column_name per aggiungere colonne all'inizio o al centro di una tabella.

  • Quando si caricano dati su una MySQL-compatible destinazione durante un'attività a pieno carico, AWS DMS non riporta gli errori causati da vincoli nei registri delle attività, che possono causare errori di chiave duplicati o mancate corrispondenze con il numero di record. Questo comportamento è riconducibile al modo in cui MySQL gestisce i dati locali con il comando LOAD DATA. Effettua le seguenti operazioni durante la fase di pieno carico:

    • Disabilita le limitazioni.

    • Utilizza la AWS DMS convalida per assicurarti che i dati siano coerenti.

  • Quando aggiorni il valore di una colonna al valore esistente, MySQL-compatible i database restituiscono un 0 rows affected avviso. Sebbene questo comportamento non sia tecnicamente un errore, la situazione è gestita diversamente in altri motori di database. Ad esempio, Oracle esegue un aggiornamento di una riga. Per MySQL-compatible i database, AWS DMS genera una voce nella tabella di controllo awsdms_apply_exceptions e registra il seguente avviso.

    Some changes from the source database had no impact when applied to the target database. See awsdms_apply_exceptions table for details.
  • Aurora serverless è disponibile come destinazione per Amazon Aurora versione 2, compatibile con MySQL versione 5.7. Seleziona Aurora MySQL versione 2.07.1 per utilizzare Aurora serverless compatibile con MySQL 5.7. Per ulteriori informazioni su Aurora Serverless, consulta Using Aurora Serverless v2 nella Amazon Aurora User Guide.

  • AWS DMS non supporta l'utilizzo di un endpoint reader per Aurora o Amazon RDS, a meno che le istanze non siano in modalità scrivibile, read_only ovvero i parametri innodb_read_only and non siano impostati su o. 0 OFF Per ulteriori informazioni sull'utilizzo di Amazon RDS e Aurora come destinazioni, consulta gli argomenti seguenti:

  • Quando si replica il tipo di dati TIME, il valore della parte temporale frazionaria non viene replicato.

  • Quando si replica il tipo di dati TIME con Extra Connection Attribute, il valore temporale è limitato all'intervallo. loadUsingCSV=false [00:00:00, 23:59:59]

Impostazioni degli endpoint quando si utilizza un database come destinazione per MySQL-compatible AWS DMS

È possibile utilizzare le impostazioni degli endpoint per configurare il database di MySQL-compatible destinazione in modo simile all'utilizzo di attributi di connessione aggiuntivi. Le impostazioni vengono specificate quando si crea l'endpoint di destinazione utilizzando la AWS DMS console o utilizzando il create-endpoint comando in AWS CLI, con la sintassi --my-sql-settings '{"EndpointSetting": "value", ...}' JSON.

La tabella riportata di seguito mostra le impostazioni degli endpoint che è possibile utilizzare con MySQL come destinazione.

Nome Description

ConnectionTimeout

Usa questo attributo di connessione aggiuntivo (ECA) per impostare il timeout di connessione all'endpoint per l'istanza MySQL, in secondi. Il valore predefinito è 10 secondi. Esempio ECA:. ConnectionTimeout=30

TargetDbType

Specifica la posizione in cui migrare le tabelle di origine sulla destinazione, su un singolo database o su più database. Se si specificaSPECIFIC_DATABASE, è necessario specificare il nome del database, quando si utilizza AWS CLI o il Console di gestione AWS.

Valore predefinito: MULTIPLE_DATABASES

Valori validi: {SPECIFIC_DATABASE, MULTIPLE_DATABASES}

Ad esempio: --my-sql-settings '{"TargetDbType": "MULTIPLE_DATABASES"}'

ParallelLoadThreads

Migliora le prestazioni durante il caricamento dei dati nel database MySQL-compatible di destinazione. Speciifica il numero di thread da utilizzare per caricare i dati nel database di MySQL-compatible destinazione. L'impostazione di un numero elevato di thread può avere ripercussioni negative sulle prestazioni del database, perché è necessaria una connessione separata per ciascun thread.

Valore predefinito: 1

Valori validi: 1-5

Ad esempio: --my-sql-settings '{"ParallelLoadThreads": 1}'

AfterConnectScript

Specifica uno script da eseguire immediatamente dopo la connessione di AWS DMS all'endpoint.

Ad esempio, è possibile specificare che il MySQL-compatible target debba tradurre le istruzioni ricevute nel set di caratteri latin1, che è il set di caratteri compilato predefinito del database. In genere, questo parametro migliora le prestazioni quando si esegue la conversione da client UTF8.

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

MaxFileSize

Speciifica la dimensione massima (in KB) di qualsiasi file con estensione csv utilizzato per trasferire dati a un database. MySQL-compatible

Valore predefinito: 32.768 KB (32 MB)

Valori validi: 1-1.048.576

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

È inoltre possibile utilizzare attributi di connessione aggiuntivi per configurare il MySQL-compatible database di destinazione.

Nella seguente tabella vengono indicati gli attributi aggiuntivi di connessione utilizzabili con MySQL come destinazione.

Nome Description

Initstmt=SET FOREIGN_KEY_CHECKS=0;

Disabilita i controlli delle chiavi esterne.

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

Initstmt=SET time_zone

Speciifica il fuso orario per il MySQL-compatible database di destinazione.

Valore predefinito: UTC

Valori validi: i nomi dei fusi orari disponibili nel database MySQL di destinazione.

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

In alternativa, è possibile utilizzare il parametro AfterConnectScript del comando --my-sql-settings per disabilitare i controlli delle chiavi esterne e specificare il fuso orario del database.

Tipi di dati di destinazione per MySQL

La tabella seguente mostra i tipi di dati di destinazione del database MySQL supportati durante l' AWS DMS utilizzo e la AWS DMS mappatura predefinita dei tipi di dati.

Per ulteriori informazioni sui tipi di AWS DMS dati, vedere. Tipi di dati per AWS Database Migration Service

AWS DMS tipi di dati

Tipi di dati MySQL

BOOLEAN

BOOLEAN

BYTES

Se la lunghezza è compresa tra 1 e 65.535, utilizzare VARBINARY (lunghezza).

Se la lunghezza è compresa tra 65.536 e 2.147.483.647, utilizzare LONGLOB.

DATE

DATE

TIME

TIME

TIMESTAMP

"Se il dimensionamento è => 0 e =< 6, DATETIME (dimensionamento)

Se il dimensionamento è => 7 e =< 9, VARCHAR (37)"

INT1

TINYINT

INT2

SMALLINT

INT4

INTEGER

INT8

BIGINT

NUMERIC

DECIMAL (p,s)

REAL4

FLOAT

REAL8

DOUBLE PRECISION

STRING

Se la lunghezza è compresa tra 1 e 21.845, utilizzare VARCHAR (lunghezza).

Se la lunghezza è compresa tra 21.846 e 2.147.483.647, utilizzare LONGTEXT.

UINT1

UNSIGNED TINYINT

UINT2

UNSIGNED SMALLINT

UINT4

UNSIGNED INTEGER

UINT8

UNSIGNED BIGINT

WSTRING

Se la lunghezza è compresa tra 1 e 32.767, utilizzare VARCHAR (lunghezza).

Se la lunghezza è compresa tra 32.768 e 2.147.483.647, utilizzare LONGTEXT.

BLOB

Se la lunghezza è compresa tra 1 e 65.535, utilizzare BLOB.

Se la lunghezza è compresa tra 65.536 e 2.147.483.647, utilizzare LONGBLOB.

Se la lunghezza è 0, utilizzare LONGBLOB (supporto LOB completo).

NCLOB

Se la lunghezza è compresa tra 1 e 65.535, utilizzare TEXT.

Se la lunghezza è compresa tra 65.536 a 2.147.483.647, utilizzare LONGTEXT con ucs2 per CHARACTER SET.

Se la lunghezza è 0, utilizzare LONGTEXT (supporto LOB completo) con ucs2 per CHARACTER SET.

CLOB

Se la lunghezza è compresa tra 1 e 65.535, utilizzare TEXT.

Se la lunghezza è compresa tra 65.536 e 2147483647, utilizzare LONGTEXT.

Se la lunghezza è 0, utilizzare LONGTEXT (supporto LOB completo).