

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 della replica basata su GTID
<a name="mysql-replication-gtid"></a>

Di seguito sono riportate le indicazioni per utilizzare gli identificatori di transazione globali (GTID) con la replica basata sui log binari (binlog) tra istanze database Amazon RDS per MySQL. 

Se si utilizza la replica basata su binlog e non si ha familiarità con la replica basata su GTID con MySQL, consulta [Replication with global transaction identifiers](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html) nella documentazione MySQL.

La replica basata su GTID è supportata per le seguenti versioni:
+ Tutte le versioni di RDS per MySQL 8.4
+ Tutte le versioni di RDS per MySQL 8.0
+ Tutte le versioni di RDS per MySQL 5.7

Tutte le istanze database MySQL in una configurazione di replica devono rispettare questo requisito relativo alla versione.

**Topics**
+ [Identificatori globali di transazione (GTID)](#mysql-replication-gtid.overview)
+ [Parametri per la replica basata su GTID](#mysql-replication-gtid.parameters)
+ [Abilitazione della replica basata su GTID per nuove repliche di lettura per RDS per MySQL](mysql-replication-gtid.configuring-new-read-replicas.md)
+ [Abilitazione della replica basata su GTID per le repliche di lettura esistenti per RDS per MySQL](mysql-replication-gtid.configuring-existing-read-replicas.md)
+ [Disabilitazione della replica basata su GTID per un'istanza database MySQL con repliche di lettura](mysql-replication-gtid.disabling.md)

## Identificatori globali di transazione (GTID)
<a name="mysql-replication-gtid.overview"></a>

*Gli identificatori globali di transazione (GTID)* sono identificatori univoci generati per le transazioni MySQL sottoposte a commit. Puoi utilizzare i GTID per semplificare la replica basata sui log binari e facilitare la risoluzione dei problemi.

MySQL utilizza due diversi tipi di transazioni per la replica basata sui log binari:
+ *Transazioni GTID* – Transazioni identificate da un GTID.
+ *Transazioni anonime* – Transazioni a cui non è assegnato un GTID.

In una configurazione di replica, i GTID sono univoci in tutte le istanze database. I GTID semplificano la configurazione della replica perché, quando vengono utilizzati, non è necessario fare riferimento alle posizioni nel file di log. I GTID semplificano anche la registrazione delle transazioni replicate e verificano che l’istanza di origine e le repliche siano coerenti.

Puoi utilizzare la replica basata su GTID per replicare i dati con le repliche di lettura di RDS for MySQL. Puoi configurare la replica basata su GTID quando crei le nuove repliche di lettura oppure puoi convertire le repliche di lettura esistenti in modo che usino la replica basata su GTID.

Puoi utilizzare la replica basata su GTID anche in una configurazione di replica ritardata con RDS for MySQL. Per ulteriori informazioni, consulta [Configurazione della replica ritardata con MySQL](USER_MySQL.Replication.ReadReplicas.DelayReplication.md).

## Parametri per la replica basata su GTID
<a name="mysql-replication-gtid.parameters"></a>

Utilizzare i parametri seguenti per configurare la replica basata su GTID.


| Parametro | Valori validi | Descrizione | 
| --- | --- | --- | 
|  `gtid_mode`  |  `OFF`, `OFF_PERMISSIVE`, `ON_PERMISSIVE`, `ON`  |  `OFF` indica che le nuove transazioni sono anonime, ovvero non hanno GTID, e che una transazione deve essere anonima per poter essere replicata.  `OFF_PERMISSIVE` indica che le nuove transazioni sono anonime, ma tutte le transazioni possono essere replicate.  `ON_PERMISSIVE` indica che le nuove transazioni hanno GTID assegnati, ma tutte le transazioni possono essere replicate.  `ON` indica che le nuove transazioni hanno GTID assegnati e che una transazione deve avere un GTID per poter essere replicata.   | 
|  `enforce_gtid_consistency`  |  `OFF`, `ON`, `WARN`  |  `OFF` consente alle transazioni di violare la coerenza GTID.  `ON` impedisce alle transazioni di violare la coerenza GTID.  `WARN` consente alle transazioni di violare la consistenza GTID, ma genera un avviso quando si verifica una violazione.   | 

**Nota**  
Nella Console di gestione AWS, il parametro `gtid_mode` viene visualizzato come `gtid-mode`.

Per la replica basata su GTID, utilizza queste impostazioni per il gruppo di parametri dell'istanza database o per la replica di lettura:
+ `ON` e `ON_PERMISSIVE` si applicano solo alla replica in uscita da un'istanza database RDS. Entrambi questi valori fanno sì che l'istanza database RDS utilizzi i GTID per le transazioni replicate. `ON` richiede che anche il database di destinazione utilizzi la replica basata su GTID. Per `ON_PERMISSIVE` la replica basata su GTID è opzionale sul database di destinazione. 
+ `OFF_PERMISSIVE`, se impostato, significa che le istanze database RDS possono accettare la replica in ingresso da un database di origine. Possono farlo indipendentemente dal fatto che il database di origine utilizzi la replica basata su GTID.
+ `OFF`, se impostato, significa che le istanze database RDS accettano solo la replica in ingresso da database di origine che non utilizzano la replica basata su GTID. 

Per ulteriori informazioni sui gruppi di parametri, consultare [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).

# Abilitazione della replica basata su GTID per nuove repliche di lettura per RDS per MySQL
<a name="mysql-replication-gtid.configuring-new-read-replicas"></a>

Quando la replica basata su GTID è abilitata per un'istanza database di RDS for MySQL, la replica basata su GTID viene configurata automaticamente per le repliche di lettura di un'istanza database.

**Per abilitare la replica basata su GTID per le nuove repliche di lettura**

1. Verificare che il gruppo di parametri associato all'istanza database abbia le impostazioni dei parametri seguenti:
   + `gtid_mode` – `ON` o `ON_PERMISSIVE`
   + `enforce_gtid_consistency` – `ON`

   Per ulteriori informazioni sull'impostazione dei parametri di configurazione mediante i gruppi di parametri, consultare [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).

1. Se è stato modificato un gruppo di parametri dell'istanza database, riavviare l'istanza. Per ulteriori informazioni su come effettuare questa operazione, consultare [Riavvio di un'istanza DB DB](USER_RebootInstance.md).

1.  Creare una o più repliche di lettura dell'istanza database. Per ulteriori informazioni su come effettuare questa operazione, consultare [Creazione di una replica di lettura](USER_ReadRepl.Create.md). 

Amazon RDS prova a stabilire una replica basata su GTID tra l'istanza database di MySQL e le repliche di lettura utilizzando `MASTER_AUTO_POSITION`. Se il tentativo non riesce, Amazon RDS utilizza le posizioni del file di log per la replica con le repliche di lettura. Per ulteriori informazioni su `MASTER_AUTO_POSITION`, consultare l'argomento relativo al [ posizionamento automatico dei GTID](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids-auto-positioning.html) nella documentazione di MySQL.

# Abilitazione della replica basata su GTID per le repliche di lettura esistenti per RDS per MySQL
<a name="mysql-replication-gtid.configuring-existing-read-replicas"></a>

Per un'istanza database di RDS for MySQL esistente con repliche di lettura che non utilizzano la replica basata su GTID, è possibile configurare la replica basata su GTID tra l'istanza database e le repliche di lettura.

**Per abilitare la replica basata su GTID per le repliche di lettura esistenti**

1. Se l'istanza database o qualsiasi replica di lettura sta utilizzando RDS versione 8.0 for MySQL versione 8.0.26 o precedente, aggiornare l'istanza database o la replica di lettura a MySQL 8.0.26 o versione successiva alla 8.0. Tutte le versioni di RDS per MySQL 8.4 e le versioni 5.7 supportano la replica basata su GTID.

   Per ulteriori informazioni, consulta [Aggiornamenti del motore di database RDS per MySQL](USER_UpgradeDBInstance.MySQL.md).

1. (Facoltativo) Reimpostare i parametri GTID e verificare il comportamento dell'istanza database e delle repliche di lettura:

   1. Verificare che il gruppo di parametri associato all'istanza database e ogni replica di lettura abbiano il parametro `enforce_gtid_consistency` impostato su `WARN`.

      Per ulteriori informazioni sull'impostazione dei parametri di configurazione mediante i gruppi di parametri, consultare [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).

   1. Se è stato modificato un gruppo di parametri dell'istanza database, riavviare l'istanza. Se il gruppo di parametri è stato modificato per una replica di lettura, riavviare la replica.

      Per ulteriori informazioni, consulta [Riavvio di un'istanza DB DB](USER_RebootInstance.md).

   1. Eseguire l'istanza database e le repliche di lettura con il normale carico di lavoro e monitorare i file di log.

      Se vengono visualizzati avvisi relativi a transazioni incompatibili con GTID, modificare l'applicazione in modo che usi solo caratteristiche compatibili con GTID. Verificare che l'istanza database non stia generando avvisi relativi a transazioni incompatibili con GTID prima di procedere alla prossima fase.

1. Reimpostare i parametri GTID per la replica basata su GTID che consente le transazioni anonime finché le repliche di lettura non ne completano l'elaborazione.

   1. Verificare che il gruppo di parametri associato all'istanza database e ogni replica di lettura abbiano le impostazioni dei parametri seguenti:
      + `gtid_mode` – `ON_PERMISSIVE`
      + `enforce_gtid_consistency` – `ON`

   1. Se è stato modificato un gruppo di parametri dell'istanza database, riavviare l'istanza. Se il gruppo di parametri è stato modificato per una replica di lettura, riavviare la replica.

1. Attendere il completamento della replica di tutte le transazioni anonime. Per verificare che vengano replicate, procedere come descritto di seguito:

   1. Eseguire questa istruzione sull'istanza DB primaria. 

      **MySQL 8.4**

      ```
      SHOW BINARY LOG STATUS;
      ```

      **MySQL 5.7 e 8.0**

      ```
      SHOW MASTER STATUS;
      ```

      Annotare i valori nelle colonne `File` e `Position`.

   1. In ogni replica di lettura, utilizzare le informazioni su file e posizione presenti nell’istanza di origine menzionata nella fase precedente per eseguire la query seguente.

      ```
      SELECT MASTER_POS_WAIT('file', position);
      ```

      Ad esempio, se il nome del file è `mysql-bin-changelog.000031` e la posizione è `107`, eseguire l'istruzione seguente.

      ```
      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

      Se la replica di lettura si trova dopo la posizione specificata, la query la restituisce immediatamente. In caso contrario, la funzione entra in attesa. Passare alla fase successiva quando la query restituisce risposte per tutte le repliche di lettura.

1. Reimpostare i parametri GTID solo per la replica basata su GTID.

   1. Verificare che il gruppo di parametri associato all'istanza database e ogni replica di lettura abbiano le impostazioni dei parametri seguenti:
      + `gtid_mode` – `ON`
      + `enforce_gtid_consistency` – `ON`

   1. Riavviare l'istanza database e ogni replica di lettura.

1. In ogni replica di lettura completare la procedura seguente.

   **MySQL 8.4 e versioni principali successive**

   ```
   CALL mysql.rds_set_source_auto_position(1);
   ```

   **MySQL 8.0 e versioni secondarie precedenti**

   ```
   CALL mysql.rds_set_master_auto_position(1);
   ```

# Disabilitazione della replica basata su GTID per un'istanza database MySQL con repliche di lettura
<a name="mysql-replication-gtid.disabling"></a>

Puoi disabilitare la replica basata su GTID per un un'istanza database MySQL con repliche di lettura. 

**Per disabilitare la replica basata su GTID per un'istanza database MySQL con repliche di lettura**

1. In ogni replica di lettura, esegui questa procedura:

   **MySQL 8.4 e versioni principali successive**

   ```
   CALL mysql.rds_set_source_auto_position(0);
   ```

   **MySQL 8.0 e versioni secondarie precedenti**

   ```
   CALL mysql.rds_set_master_auto_position(0);
   ```

1. Reimpostare `gtid_mode` su `ON_PERMISSIVE`.

   1. Verifica che il gruppo di parametri associato all'istanza database MySQL e ogni replica di lettura abbiano `gtid_mode` impostato su `ON_PERMISSIVE`.

      Per ulteriori informazioni sull'impostazione dei parametri di configurazione mediante i gruppi di parametri, consultare [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).

   1. Riavvia l'istanza database MySQL e ogni replica di lettura. Per ulteriori informazioni sul riavvio, consultare [Riavvio di un'istanza DB DB](USER_RebootInstance.md).

1. Reimpostare `gtid_mode` su `OFF_PERMISSIVE`.

   1. Verifica che il gruppo di parametri associato all'istanza database MySQL e ogni replica di lettura abbiano `gtid_mode` impostato su `OFF_PERMISSIVE`.

   1. Riavvia l'istanza database MySQL e ogni replica di lettura.

1. Attendere che tutte le transazioni GTID vengano applicate a tutte le repliche di lettura. Per verificare che le transazioni siano applicate, esegui queste operazioni:

   1. Su un’istanza database MySQL, esegui questo comando:

      **MySQL 8.4**

      ```
      SHOW BINARY LOG STATUS
      ```

      **MySQL 5.7 e 8.0**

      ```
      SHOW MASTER STATUS
      ```

      L’output visualizzato dovrebbe essere simile al seguente.

      ```
      File                        Position
      ------------------------------------
      mysql-bin-changelog.000031      107
      ------------------------------------
      ```

      Annotare il file e la posizione nell'output.

   1. In ogni replica di lettura, utilizza le informazioni su file e posizione presenti nell’istanza di origine menzionata nella fase precedente per eseguire la query seguente.

      **MySQL 8.4 e MySQL 8.0.26 e versioni successive a MySQL 8.0**

      ```
      SELECT SOURCE_POS_WAIT('file', position);
      ```

      **MySQL 5.7**

      ```
      SELECT MASTER_POS_WAIT('file', position);
      ```

      Ad esempio, se il nome del file è `mysql-bin-changelog.000031` e la posizione è `107`, eseguire l’istruzione seguente.

      **MySQL 8.4 e MySQL 8.0.26 e versioni successive a MySQL 8.0**

      ```
      SELECT SOURCE_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

      **MySQL 5.7**

      ```
      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

1. Reimposta i parametri GTID per disabilitare la replica basata su GTID.

   1. Verifica che il gruppo di parametri associato all'istanza database MySQL e ogni replica di lettura abbiano le impostazioni dei parametri seguenti:
      + `gtid_mode` – `OFF`
      + `enforce_gtid_consistency` – `OFF`

   1. Riavvia l'istanza database MySQL e ogni replica di lettura.