Configurazione della replica da più origini per Amazon RDS per MySQL - Amazon Relational Database 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à.

Configurazione della replica da più origini per Amazon RDS per MySQL

La replica da più origini consente di configurare un’istanza database Amazon RDS per MySQL come replica che riceve eventi del log binario da più di un’istanza database RDS per MySQL di origine. La replica da più origini è supportata per le istanze database RDS per MySQL con le versioni del motore seguenti:

  • Tutte le versioni di MySQL 8.4

  • 8.0.35 e versioni secondarie successive

  • 5.7.44 e versioni secondarie successive

Per informazioni sulla replica da più origini MySQL, consulta MySQL Multi-Source Replication nella documentazione MySQL. La documentazione MySQL contiene informazioni dettagliate su questa funzionalità, mentre il presente argomento descrive come configurare e gestire i canali di replica da più origini nelle istanze database RDS per MySQL.

Casi d’uso per la replica da più origini

L’uso della replica da più origini in RDS per MySQL è opportuna per le applicazioni o i requisiti seguenti:

  • Unione o combinazione di più shard di istanze database separate in un unico shard.

  • Generazione di report da dati consolidati da più origini.

  • Creazione di backup consolidati a lungo termine dei dati distribuiti tra più istanze database RDS per MySQL.

Prerequisiti per la replica da più origini

Prima di configurare la replica da più origini, assicurarsi che siano rispettati i prerequisiti seguenti.

  • Per ogni istanza database RDS per MySQL di origine devono essere abilitati i backup automatici. L’abilitazione dei backup automatici consente di eseguire la registrazione di log binari. Per informazioni su come abilitare i backup automatici, consulta Abilitazione dei backup automatici.

  • Per evitare errori di replica, si consiglia di bloccare le operazioni di scrittura nelle istanze database di origine. A tale scopo, impostare il parametro read-only su ON in un gruppo di parametri personalizzato collegato all’istanza database RDS per MySQL di origine. È possibile utilizzare la Console di gestione AWS o la AWS CLI per creare un nuovo gruppo di parametri personalizzato o per modificarne uno esistente. Per ulteriori informazioni, consulta Creazione di un gruppo di parametri database in Amazon RDS e Modifica dei parametri in un gruppo di parametri database in Amazon RDS.

  • Per ogni istanza database di origine, aggiungere l’indirizzo IP dell’istanza database al gruppo di sicurezza Amazon Virtual Private Cloud (VPC) per l’istanza database da più origini. Per identificare l’indirizzo IP di un’istanza database di origine, eseguire il comando dig RDS Endpoint da un’istanza Amazon EC2 nello stesso gruppo VPC dell’istanza database da più origini.

  • Per ogni istanza database di origine, utilizzare un client per connettersi all’istanza database e creare un utente del database con i privilegi richiesti per la replica, come nell’esempio seguente.

    CREATE USER 'repl_user' IDENTIFIED BY 'password'; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user';
    Nota

    A partire da MySQL 8.4, il privilegio REPLICATION SLAVE è obsoleto ed è stato sostituito da REPLICATION REPLICA. Per MySQL 8.4 e versioni successive, utilizzare la sintassi seguente:

    CREATE USER 'repl_user' IDENTIFIED BY 'password'; GRANT REPLICATION CLIENT, REPLICATION REPLICA ON *.* TO 'repl_user';

Configurazione di canali di replica da più origini in istanze database RDS per MySQL

La configurazione dei canali di replica da più origini è analoga a quella della replica da un’unica origine. Per la replica da più origini, attiva innanzitutto la registrazione di log binari nell’istanza di origine. Successivamente, importa i dati dalle origini nella replica da più origini, quindi avvia la replica da ciascuna origine utilizzando le coordinate del log binario oppure il posizionamento automatico GTID.

Per configurare un’istanza database RDS per MySQL come replica da più origini di due o più istanze database RDS per MySQL, esegui queste operazioni.

Fase 1: importare i dati dalle istanze database di origine alla replica da più origini

Esegui le operazioni seguenti per ogni istanza database di origine.

Prima di importare i dati da un’origine nella replica da più origini, esegui il comando SHOW MASTER STATUS per determinare il file di log binario e la posizione correnti. Annota questi dettagli per utilizzarli nella fase successiva. In questo output di esempio, il file è mysql-bin-changelog.000031 e la posizione è 107.

Nota

A partire da MySQL 8.4, il comando SHOW MASTER STATUS è obsoleto ed è stato sostituito da SHOW BINARY LOG STATUS. Per MySQL 8.4 e versioni successive, utilizza SHOW BINARY LOG STATUS.

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

Copia il database dall’istanza database di origine nella replica da più origini utilizzando mysqldump, come nell’esempio seguente.

mysqldump --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -u RDS_user_name \ -p RDS_password \ --host=RDS Endpoint | mysql \ --host=RDS Endpoint \ --port=3306 \ -u RDS_user_name \ -p RDS_password

Dopo aver copiato il database, è possibile impostare il parametro di sola lettura su OFF nell’istanza database di origine.

Fase 2: avviare la replica dalle istanze database di origine nella replica da più origini

Per ogni istanza database di origine, utilizza le credenziali dell’utente amministratore per connetterti all’istanza ed esegui le due stored procedure seguenti che configurano la replica su un canale e la avviano. In questo esempio si utilizzano il nome e la posizione del file binlog restituito dall’esempio nella fase precedente.

CALL mysql.rds_set_external_source_for_channel('mysourcehost.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1, 'channel_1'); CALL mysql.rds_start_replication_for_channel('channel_1');

Per ulteriori informazioni sull’utilizzo di queste e di altre stored procedure per l’impostazione e la gestione dei canali di replica, consulta Gestione della replica da più origini.

Utilizzo dei filtri con la replica da più origini

I filtri di replica consentono di specificare quali database e tabelle vengono replicati con una replica da più origini. I filtri di replica possono includere database e tabelle nella replica o escluderli dalla replica. Per ulteriori informazioni sui filtri di replica, consulta Configurazione dei filtri di replica con MySQL.

Con la replica da più origini è possibile configurare i filtri di replica a livello globale oppure a livello di canale. L’applicazione dei filtri a livello di canale è possibile solo nelle istanze database supportate che eseguono la versione 8.0 o la versione 8.4. Gli esempi seguenti mostrano come configurare i filtri a livello globale oppure a livello di canale.

Per l’applicazione dei filtri nella replica da più origini, tenere presente i requisiti seguenti:

  • I nomi dei canali devono essere racchiusi tra backtick (``).

  • Se si modificano i filtri di replica nel gruppo di parametri, l’elemento sql_thread della replica da più origini per tutti i canali con aggiornamenti viene riavviato per applicare dinamicamente le modifiche. Se un aggiornamento coinvolge un filtro globale, tutti i canali di replica in stato di esecuzione vengono riavviati.

  • Tutti i filtri globali vengono applicati prima di qualsiasi filtro specifico del canale.

  • Se un filtro viene applicato globalmente e a livello di canale, si utilizza solo il filtro a livello di canale. Ad esempio, se i filtri sono replicate_ignore_db="db1,`channel_22`:db2", il filtro replicate_ignore_db impostato su db1 viene applicato a tutti a canali ad eccezione di channel_22 e solo channel_22 ignora le modifiche da db2.

Esempio 1. Impostazione di un filtro globale

Nell’esempio seguente, il database temp_data è escluso dalla replica in ogni canale.

Per Linux, macOS o Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-db,ParameterValue='temp_data',ApplyMethod=immediate"

Esempio 2. Impostazione di un filtro a livello di canale

Nell’esempio seguente, le modifiche dal database sample22 sono incluse sono nel canale channel_22. In modo analogo, le modifiche dal database sample99 sono incluse solo nel canale channel_99.

Per Linux, macOS o Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-db,ParameterValue='\`channel_22\`:sample22,\`channel_99\`:sample99',ApplyMethod=immediate"

Monitoraggio di canali di replica da più origini

Per monitorare i singoli canali in una replica da più origini, utilizzare uno dei metodi seguenti:

  • Per monitorare lo stato di tutti i canali o di un canale specifico, connettersi alla replica da più origini ed eseguire il comando SHOW REPLICA STATUS o SHOW REPLICA STATUS FOR CHANNEL 'channel_name'. Per ulteriori informazioni, consulta Verifica dello stato della replica nella documentazione MySQL.

  • Per ricevere una notifica quando un canale di replica viene avviato, interrotto o rimosso, utilizzare la notifica di eventi RDS. Per ulteriori informazioni, consulta Utilizzo della notifica degli eventi di Amazon RDS.

  • Per monitorare il ritardo per un canale specifico, controllare la relativa metrica ReplicationChannelLag. I punti dati per questa metrica hanno un periodo di 60 secondi (1 minuto) e sono disponibili per 15 giorni. Per individuare il ritardo del canale di replica per un canale, utilizzare l’identificatore di istanza e il nome del canale di replica. Per ricevere una notifica quando il ritardo supera una determinata soglia, impostare un allarme CloudWatch. Per ulteriori informazioni, consulta Monitoraggio dei parametri di Amazon RDS con Amazon CloudWatch.

Considerazioni e best practice per la replica da più origini

Prima di utilizzare la replica da più origini in RDS per MySQL, rivedere le considerazioni e le best practice seguenti:

  • Verificare che un’istanza database configurata come replica da più origini disponga di risorse sufficienti, ad esempio throughput, memoria, CPU e IOPS, per gestire il carico di lavoro proveniente da più istanze di origine.

  • Monitorare regolarmente l’uso delle risorse sulla replica da più origini e modificare la configurazione dell’archiviazione o dell’istanza per gestire il carico di lavoro senza sovraccaricare le risorse.

  • Impostare la variabile di sistema replica_parallel_workers su un valore maggiore di 0 per configurare la replica multi-thread in una replica da più origini. In questo caso, il numero di thread assegnati a ciascun canale è il valore della variabile più un thread di coordinamento per gestire i thread dell’applicatore.

  • Configurare i filtri di replica in modo appropriato per evitare conflitti. Per replicare un intero database su un altro database in una replica, è possibile utilizzare l’opzione --replicate-rewrite-db. Ad esempio, si possono replicare tutte le tabelle del database A nel database B in un’istanza di replica. Questo approccio può essere utile quando tutte le istanze di origine utilizzano la stessa convenzione di denominazione dello schema. Per informazioni sull’opzione --replicate-rewrite-db, consulta Replica Server Options and Variables nella documentazione MySQL.

  • Per evitare errori di replica, non scrivere sulla replica. Si consiglia di abilitare il parametro read_only sulle repliche da più origini per bloccare le operazioni di scrittura. In tal modo è possibile eliminare i problemi di replica causati da operazioni di scrittura in conflitto.

  • Per aumentare le prestazioni delle operazioni di lettura, ad esempio ordinamenti e join a carico elevato, eseguite sulla replica da più origini, considerare l’utilizzo di Letture ottimizzate per Amazon RDS. Questa funzionalità può essere utile per le query che dipendono da tabelle temporanee o da file di ordinamento di grandi dimensioni. Per ulteriori informazioni, consulta Prestazioni delle query migliorate per RDS per MySQL con Amazon RDS Optimized Reads.

  • Per ridurre il ritardo nella replica e migliorare le prestazioni di una replica da più origini, si consiglia di abilitare scritture ottimizzate. Per ulteriori informazioni, consulta Prestazioni di scrittura migliorate con Scritture ottimizzate per Amazon RDS per MySQL.

  • Eseguire operazioni di gestione, ad esempio la modifica della configurazione, su un canale alla volta ed evitare di apportare modifiche a più canali da più connessioni per non provocare conflitti nelle operazioni di replica. Se si eseguono simultaneamente le procedure rds_skip_repl_error_for_channel e rds_start_replication_for_channel da più connessioni, ad esempio, gli eventi possono essere ignorati in un canale diverso da quello previsto.

  • È possibile abilitare i backup su un’istanza di replica da più origini ed esportare i dati da tale istanza in un bucket Amazon S3 per archiviarli a lungo termine. Tuttavia, è importante configurare anche i backup con una conservazione appropriata nelle singole istanze di origine. Per informazioni sull’esportazione dei dati di snapshot in Amazon S3, consulta Supporto per l’esportazione di dati dello snapshot del database in Amazon S3 per Amazon RDS.

  • È possibile creare repliche di lettura da una replica da più origini per distribuirvi il carico di lavoro di lettura. Le repliche di lettura possono essere posizionate in Regioni AWS diverse in base ai requisiti dell’applicazione. Per ulteriori informazioni sulle repliche di lettura, consulta Uso delle repliche di lettura MySQL.

Limitazioni per la replica da più origini in RDS per MySQL

Alla replica da più origini in RDS per MySQL si applicano le limitazioni seguenti:

  • Per una replica da più origini, RDS per MySQL supporta attualmente la configurazione di un massimo di 15 canali.

  • Un’istanza di replica di lettura non può essere configurata come replica da più origini.

  • Per configurare la replica da più origini in RDS per MySQL con versione del motore 5.7, è necessario abilitare lo schema delle prestazioni sull’istanza di replica. L’abilitazione dello schema delle prestazioni è facoltativa in RDS per MySQL con versione del motore 8.0 o 8.4.

  • In RDS per MySQL con versione del motore 5.7, i filtri di replica si applicano a tutti i canali di replica. In RDS per MySQL con versione del motore 8.0 o 8.4, è possibile configurare filtri che si applicano a tutti i canali di replica oppure a singoli canali.

  • Il ripristino di uno snapshot RDS o l’esecuzione di un ripristino point-in-time (PITR) non hanno effetto sulle configurazione di canali di replica da più origini.

  • Quando si crea una replica di lettura di una replica da più origini, vengono replicati solo i dati dell’istanza da più origini e non viene ripristinata alcuna configurazione dei canali.

  • MySQL non supporta la configurazione di un numero diverso di worker paralleli per canale. A ogni canale viene assegnato lo stesso numero di worker paralleli in base al valore replica_parallel_workers.

Se la destinazione di replica da più origini è un cluster di database Multi-AZ, si applicano le limitazioni aggiuntive seguenti:

  • È necessario configurare un canale per un’istanza RDS per MySQL di origine prima che sia possibile scrivere su tale istanza.

  • Per ogni istanza RDS per MySQL di origine, la replica basata su GTID deve essere abilitata.

  • Un evento di failover sul cluster di database rimuove la configurazione di replica da più origini. Il ripristino di tale configurazione richiede la ripetizione delle operazioni di configurazione.