

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
<a name="CHAP_Target.MySQL"></a>

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](CHAP_Security.SSL.md) 

Per informazioni sulle versioni di MySQL supportate come AWS DMS destinazione, vedere. [Obiettivi per AWS DMS](CHAP_Introduction.Targets.md)

È 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à](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

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

**Topics**
+ [Utilizzo di qualsiasi MySQL-compatible database come destinazione per AWS Database Migration Service](#CHAP_Target.MySQL.Prerequisites)
+ [Considerazioni sui target Aurora MySQL 8.4](#CHAP_Target.MySQL.AuroraMySQL84)
+ [Limitazioni all'uso di un MySQL-compatible database come destinazione per AWS Database Migration Service](#CHAP_Target.MySQL.Limitations)
+ [Impostazioni degli endpoint quando si utilizza un database come destinazione per MySQL-compatible AWS DMS](#CHAP_Target.MySQL.ConnectionAttrib)
+ [Tipi di dati di destinazione per MySQL](#CHAP_Target.MySQL.DataTypes)

## Utilizzo di qualsiasi MySQL-compatible database come destinazione per AWS Database Migration Service
<a name="CHAP_Target.MySQL.Prerequisites"></a>

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
<a name="CHAP_Target.MySQL.AuroraMySQL84"></a>

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](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Security.html) Manager nella Guida per l'utente di [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html).* Per informazioni sui problemi noti del plug-in di autenticazione, consulta [Plugin di autenticazione](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html#MySQL.Concepts.KnownIssuesAndLimitations.authentication-plugin) nella *Amazon RDS User Guide*.

## Limitazioni all'uso di un MySQL-compatible database come destinazione per AWS Database Migration Service
<a name="CHAP_Target.MySQL.Limitations"></a>

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](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) 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:
  +  [ Determinazione dell'istanza database a cui si è connessi](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.BestPractices.html#AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection) 
  +  [ Aggiornamento di repliche di lettura con MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MySQL.Replication.ReadReplicas.html#USER_MySQL.Replication.ReadReplicas.Updates) 
+ 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
<a name="CHAP_Target.MySQL.ConnectionAttrib"></a>

È 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](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), 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 specifica`SPECIFIC_DATABASE`, è necessario specificare il nome del database, quando si utilizza AWS CLI o il Console di gestione AWS.<br />Valore predefinito: `MULTIPLE_DATABASES`<br />Valori validi: {`SPECIFIC_DATABASE`, `MULTIPLE_DATABASES`} <br />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. <br />Valore predefinito: 1 <br />Valori validi: 1-5 <br />Ad esempio: `--my-sql-settings '{"ParallelLoadThreads": 1}'` | 
| `AfterConnectScript` | Specifica uno script da eseguire immediatamente dopo la connessione di AWS DMS all'endpoint.<br />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.<br />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 <br />Valore predefinito: 32.768 KB (32 MB)<br />Valori validi: 1-1.048.576<br />`--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.<br />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. <br />Valore predefinito: UTC <br />Valori validi: i nomi dei fusi orari disponibili nel database MySQL di destinazione.<br />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
<a name="CHAP_Target.MySQL.DataTypes"></a>

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](CHAP_Reference.DataTypes.md)


|  AWS DMS tipi di dati  |  Tipi di dati MySQL  | 
| --- | --- | 
| BOOLEAN | BOOLEAN | 
| BYTES | Se la lunghezza è compresa tra 1 e 65.535, utilizzare VARBINARY (lunghezza). <br />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)<br />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).<br />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). <br />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.<br />Se la lunghezza è compresa tra 65.536 e 2.147.483.647, utilizzare LONGBLOB.<br />Se la lunghezza è 0, utilizzare LONGBLOB (supporto LOB completo). | 
| NCLOB | Se la lunghezza è compresa tra 1 e 65.535, utilizzare TEXT.<br />Se la lunghezza è compresa tra 65.536 a 2.147.483.647, utilizzare LONGTEXT con ucs2 per CHARACTER SET.<br />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.<br />Se la lunghezza è compresa tra 65.536 e 2147483647, utilizzare LONGTEXT.<br />Se la lunghezza è 0, utilizzare LONGTEXT (supporto LOB completo). | 