Configurazione multi-source-replication per RDS for 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 multi-source-replication per RDS for MySQL

Con la replica da più fonti, puoi configurare un'istanza DB Amazon RDS for MySQL come replica che riceve eventi di log binari da più di un'istanza DB di origine RDS for MySQL. La replica da più fonti è supportata per le istanze DB RDS for MySQL che eseguono le seguenti versioni del motore:

  • 8.0.35 e versioni secondarie successive

  • 5.7.44 e versioni secondarie successive

Per informazioni sulla replica multi-source MySQL, consulta MySQL Multi-Source Replication nella documentazione di MySQL. La documentazione MySQL contiene informazioni dettagliate su questa funzionalità, mentre questo argomento descrive come configurare e gestire i canali di replica multi-source sulle istanze DB RDS per MySQL.

Casi d'uso per la replica da più fonti

I seguenti casi sono buoni candidati per l'utilizzo della replica da più fonti su RDS per MySQL:

  • Applicazioni che devono unire o combinare più shard su istanze DB separate in un unico shard.

  • Applicazioni che devono generare report da dati consolidati da più fonti.

  • Requisiti per creare backup consolidati a lungo termine dei dati distribuiti tra più istanze DB RDS for MySQL.

Considerazioni e best practice per la replica da più fonti

Prima di utilizzare la replica da più fonti su RDS for MySQL, esamina le seguenti considerazioni e best practice:

  • Assicurati che un'istanza DB configurata come replica da più fonti disponga di risorse sufficienti come throughput, memoria, CPU e IOPS per gestire il carico di lavoro proveniente da più istanze di origine.

  • Monitora regolarmente l'utilizzo delle risorse sulla replica da più fonti e regola lo storage o la configurazione dell'istanza per gestire il carico di lavoro senza sovraccaricare le risorse.

  • È possibile configurare la replica multithread su una replica da più fonti impostando la variabile di sistema su un valore maggiore di. replica_parallel_workers 0 In questo caso, il numero di thread assegnati a ciascun canale è il valore di questa variabile, più un thread di coordinamento per gestire i thread dell'applicatore.

  • Configura i filtri di replica in modo appropriato per evitare conflitti. Per replicare un intero database su un altro database su una replica, è possibile utilizzare l'opzione. --replicate-rewrite-db Ad esempio, è possibile replicare tutte le tabelle del database A nel database B su 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'--replicate-rewrite-dbopzione, consulta Opzioni e variabili del server di replica nella documentazione di MySQL.

  • Per evitare errori di replica, evita di scrivere sulla replica. Si consiglia di abilitare il read_only parametro sulle repliche da più fonti per bloccare le operazioni di scrittura. In questo 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 con carichi elevati, eseguite sulla replica da più fonti, prendi in considerazione l'utilizzo di RDS Optimized Reads. Questa funzionalità può essere utile per le interrogazioni che dipendono da tabelle temporanee di grandi dimensioni o da file di ordinamento. Per ulteriori informazioni, consulta Prestazioni delle query migliorate per RDS per MySQL con Amazon RDS Optimized Reads.

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

  • Esegui operazioni di gestione (come la modifica della configurazione) su un canale alla volta ed evita di apportare modifiche a più canali da più connessioni. Queste pratiche possono portare a conflitti nelle operazioni di replica. Ad esempio, l'esecuzione rds_skip_repl_error_for_channel simultanea di rds_start_replication_for_channel procedure da più connessioni può causare il salto di eventi su un canale diverso da quello previsto.

  • Puoi abilitare i backup su un'istanza di replica da più fonti ed esportare i dati da quell'istanza in un bucket Amazon S3 per archiviarli a lungo termine. Tuttavia, è importante configurare anche i backup con una conservazione appropriata sulle singole istanze di origine. Per informazioni sull'esportazione dei dati delle istantanee in Amazon S3, consulta. Esportazione dei dati dello snapshot DB in Simple Storage Service (Amazon S3)

  • Per distribuire il carico di lavoro di lettura su una replica da più fonti, puoi creare repliche di lettura da una replica da più fonti. È possibile posizionare queste repliche di lettura in diversi modi Regioni AWS in base ai requisiti dell'applicazione. Per ulteriori informazioni sulle repliche di lettura, consulta Uso delle repliche di lettura MySQL.

Prerequisiti per la replica da più fonti

Prima di configurare la replica da più fonti, completare i seguenti prerequisiti.

  • Assicurati che ogni istanza DB RDS for MySQL di origine abbia i backup automatici abilitati. L'abilitazione dei backup automatici consente la registrazione binaria. 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 sulle istanze DB di origine. È possibile farlo impostando il read-only parametro su ON in un gruppo di parametri personalizzato collegato all'istanza DB di origine RDS for MySQL. È possibile utilizzare AWS Management Console o the 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 del database e Modifica di parametri in un gruppo di parametri del database.

  • Per ogni istanza DB di origine, aggiungi l'indirizzo IP dell'istanza al gruppo di sicurezza Amazon Virtual Private Cloud (VPC) per l'istanza DB multi-source. Per identificare l'indirizzo IP di un'istanza DB di origine, puoi eseguire il comando. dig RDS Endpoint Esegui il comando da un'istanza Amazon EC2 nello stesso VPC dell'istanza DB multi-sorgente di destinazione.

  • Per ogni istanza DB di origine, utilizza un client per connetterti all'istanza DB e crea 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';

Configurazione di canali di replica da più fonti su istanze DB RDS per MySQL

La configurazione dei canali di replica da più fonti è simile alla configurazione della replica da un'unica fonte. Per la replica da più fonti, è innanzitutto necessario attivare la registrazione binaria sull'istanza di origine. Quindi, si importano i dati dalle sorgenti alla replica da più fonti. Quindi, si avvia la replica da ciascuna fonte utilizzando le coordinate del log binario o utilizzando il posizionamento automatico GTID.

Per configurare un'istanza DB RDS for MySQL come replica multi-source di due o più istanze DB RDS for MySQL, procedi nel seguente modo.

Fase 1: Importazione dei dati dalle istanze DB di origine alla replica multisorgente

Esegui i passaggi seguenti su ogni istanza DB di origine.

Prima di importare i dati da un'origine alla replica da più fonti, determina il file di registro binario e la posizione correnti eseguendo il SHOW MASTER STATUS comando. Prendi nota di questi dettagli per utilizzarli nel passaggio successivo. In questo output di esempio, il file è mysql-bin-changelog.000031 e la posizione è107.

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

Ora copia il database dall'istanza DB di origine alla replica multisorgente utilizzandomysqldump, 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 OFF su nell'istanza DB di origine.

Passaggio 2: avviare la replica dalle istanze DB di origine alla replica multisorgente

Per ogni istanza DB di origine, utilizza le credenziali dell'utente principale per connetterti all'istanza ed esegui le due stored procedure seguenti. Queste stored procedure configurano la replica su un canale e avviano la replica. Questo esempio utilizza il nome e la posizione del file binlog dell'output di esempio del passaggio precedente.

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

Per ulteriori informazioni sull'utilizzo di queste stored procedure e di altre per configurare e gestire i canali di replica, vedere. Gestione della replica da più fonti

Utilizzo di filtri con replica da più fonti

È possibile utilizzare i filtri di replica per specificare con quali database e tabelle vengono replicati in una replica da più fonti. I filtri di replica possono includere database e tabelle nella replica o escluderli dalla replica. Per ulteriori informazioni sui filtri di replica, vedere. Configurazione dei filtri di replica con MySQL

Con la replica da più fonti, puoi configurare i filtri di replica a livello globale o a livello di canale. Il filtraggio a livello di canale è disponibile solo con le istanze DB supportate che eseguono la versione 8.0. Gli esempi seguenti mostrano come configurare i filtri a livello globale o a livello di canale.

Tieni presente i seguenti requisiti e comportamenti con il filtraggio nella replica da più fonti:

  • Sono obbligatorie le virgolette (``) attorno ai nomi dei canali.

  • Se modificate i filtri di replica nel gruppo di parametri, le repliche da più fonti sql_thread per tutti i canali con aggiornamenti vengono riavviate per applicare le modifiche in modo dinamico. Se un aggiornamento riguarda un filtro globale, tutti i canali di replica nello 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, viene applicato solo il filtro a livello di canale. Ad esempio, se i filtri lo sonoreplicate_ignore_db="db1,`channel_22`:db2", allora replicate_ignore_db set to db1 viene applicato a tutti i canali tranne e channel_22 ignora solo le channel_22 modifiche apportate da. db2

Esempio 1: impostazione di un filtro globale

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

Per LinuxmacOS, oUnix:

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 sample22 database sono incluse solo nel canale. channel_22 Allo stesso modo, le modifiche dal sample99 database sono incluse solo nel canalechannel_99.

Per LinuxmacOS, oUnix:

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 dei canali di replica da più fonti

È possibile monitorare singoli canali in una replica da più fonti utilizzando i seguenti metodi:

  • Per monitorare lo stato di tutti i canali o di un canale specifico, connettiti alla replica multisorgente ed esegui il comando or. SHOW REPLICA STATUS SHOW REPLICA STATUS FOR CHANNEL 'channel_name' Per ulteriori informazioni, vedere Verifica dello stato della replica nella documentazione di MySQL.

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

  • Per monitorare il ritardo per un canale specifico, controlla la relativa ReplicationChannelLag metrica. 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, utilizzate l'identificatore di istanza e il nome del canale di replica. Per ricevere una notifica quando questo ritardo supera una determinata soglia, puoi impostare un allarme. CloudWatch Per ulteriori informazioni, consulta Monitoraggio dei parametri di Amazon RDS con Amazon CloudWatch.

Limitazioni per la replica da più fonti su RDS for MySQL

Le seguenti limitazioni si applicano alla replica da più fonti su RDS for MySQL:

  • Attualmente, RDS for MySQL supporta la configurazione di un massimo di 15 canali per una replica multi-sorgente.

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

  • Per configurare la replica da più fonti su RDS for MySQL Running Engine versione 5.7, è necessario abilitare Performance Schema sull'istanza di replica. L'attivazione dello schema delle prestazioni è facoltativa su RDS for MySQL con motore in esecuzione versione 8.0.

  • Per RDS for MySQL Running Engine versione 5.7, i filtri di replica si applicano a tutti i canali di replica. Per RDS for MySQL con motore in esecuzione versione 8.0, è possibile configurare filtri che si applicano a tutti i canali di replica o ai singoli canali.

  • Il ripristino di un'istantanea RDS o l'esecuzione di un P-Restore (PITR) non oint-in-time ripristinano le configurazioni dei canali di replica da più fonti.

  • Quando si crea una replica di lettura di una replica da più fonti, vengono replicati solo i dati dell'istanza da più fonti. Non ripristina alcuna configurazione dei canali.

  • MySQL non supporta la configurazione di un numero diverso di parallel worker per ogni canale. Ogni canale riceve lo stesso numero di worker paralleli in base al replica_parallel_workers valore.

Le seguenti limitazioni aggiuntive si applicano se la destinazione di replica da più fonti è un cluster DB Multi-AZ:

  • È necessario configurare un canale per un'istanza RDS for MySQL di origine prima che avvenga qualsiasi scrittura su quell'istanza.

  • Ogni istanza di RDS for MySQL di origine deve avere la replica basata su GTID abilitata.

  • Un evento di failover sul cluster DB rimuove la configurazione di replica da più fonti. Il ripristino di tale configurazione richiede la ripetizione dei passaggi di configurazione.