Utilizzo di un database compatibile con MySQL come destinazione per AWS Database Migration Service - AWS Servizio di migrazione del Database

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 database compatibile con MySQL come destinazione per AWS Database Migration Service

È possibile migrare i dati su qualsiasi database compatibile con MySQL utilizzando uno qualsiasi dei AWS DMS motori di dati di origine supportati. AWS DMS Se si esegue la migrazione a un database locale compatibile con MySQL, è 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 il protocollo SSL per crittografare le connessioni tra l'endpoint compatibile con MySQL e l'istanza di replica. Per ulteriori informazioni sull'utilizzo di SSL con un endpoint compatibile con MySQL, consulta 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 database compatibili con MySQL 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 storage di origine (MyISAM, MEMORY e così via), AWS DMS crea una tabella di destinazione compatibile con MySQL come tabella InnoDB per impostazione predefinita.

Se ti occorre una tabella che utilizza un motore di storage diverso da InnoDB, puoi creare manualmente la tabella sulla destinazione compatibile con MySQL e migrare la tabella utilizzando l'opzione Nessuna azione. Per ulteriori informazioni, consulta Impostazioni delle attività di caricamento completo.

Per ulteriori dettagli sull'utilizzo di un database compatibile con MySQL come destinazione per AWS DMS, consulta le sezioni seguenti.

Utilizzo di qualsiasi database compatibile con MySQL come destinazione per AWS Database Migration Service

Prima di iniziare a utilizzare un database compatibile con MySQL come destinazione per AWS DMS, accertati di aver soddisfatto i seguenti prerequisiti:

  • Fornisci un account utente con AWS DMS privilegi di lettura/scrittura per il database compatibile con MySQL. 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 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 i controlli delle chiavi esterne su un database compatibile con MySQL 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.

Limitazioni all'utilizzo di un database compatibile con MySQL 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 destinazione compatibile con MySQL in un'attività a caricamento completo, 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 AWS DMS la convalida per assicurarti che i dati siano coerenti.

  • Quando si aggiorna il valore di una colonna al valore esistente, i database compatibili con MySQL restituiscono un avviso 0 rows affected. 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 i database compatibili con MySQL, 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:

Impostazioni degli endpoint quando si utilizza un database compatibile con MySQL come destinazione per AWS DMS

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

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

Nome Descrizione

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 il o il AWS CLI . AWS Management Console

Valore predefinito: MULTIPLE_DATABASES

Valori validi: {SPECIFIC_DATABASE, MULTIPLE_DATABASES}

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

ParallelLoadThreads

Migliora le prestazioni durante il caricamento dei dati nel database di destinazione compatibile con MySQL. Specifica il numero di thread da utilizzare per caricare i dati nel database di destinazione compatibile con MySQL. 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

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

AfterConnectScript

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

Ad esempio, puoi specificare che la destinazione compatibile con MySQL deve convertire le istruzioni ricevute nel set di caratteri latin1, ovvero il set di caratteri compilato predefinito del database. In genere, questo parametro migliora le prestazioni quando si esegue la conversione da client UTF8.

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

MaxFileSize

Specifica le dimensioni massime (in KB) di qualsiasi file .csv utilizzato per il trasferimento dei dati su database compatibile con MySQL.

Valore predefinito: 32.768 KB (32 MB)

Valori validi: 1-1.048.576

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

CleanSrcMetadataOnMismatch

Esegue la pulizia e crea nuovamente le informazioni dei metadati delle tabelle sull'istanza di replica se si verifica una mancata corrispondenza. Un esempio è una situazione in cui l'esecuzione di un'istruzione di modifica di DDL sulla tabella potrebbe avere come risultato informazioni diverse relative alla tabella memorizzata nella cache nell'istanza di replica. booleano.

Valore predefinito: false

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

Puoi anche utilizzare gli attributi aggiuntivi di connessione per configurare il database di destinazione compatibile con MySQL.

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

Nome Descrizione

Initstmt=SET FOREIGN_KEY_CHECKS=0;

Disabilita i controlli delle chiavi esterne.

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

Initstmt=SET time_zone

Specifica il fuso orario per il database di destinazione compatibile con MySQL.

Valore predefinito: UTC

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

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).