Come posso utilizzare la funzione di applicazione batch di DMS per migliorare le prestazioni di replica CDC?

8 minuti di lettura
0

Sto eseguendo un task a pieno carico e un task di acquisizione dei dati di modifica (CDC) di AWS Database Migration Service (AWS DMS). La latenza di origine non è elevata, ma la latenza di destinazione è elevata o è in aumento. Come posso velocizzare la fase di replica del CDC?

Breve descrizione

AWS DMS utilizza i seguenti metodi per replicare i dati nella fase di acquisizione dei dati di modifica (CDC):

  • Applicazione transazionale
  • Applica in batch

Il processo CDC di AWS DMS è a thread singolo, per impostazione predefinita (si applica alle transazioni). Si tratta dello stesso metodo utilizzato per la replica SQL come per tutti gli altri motori di database di elaborazione transazionale online (OLTP). La replica DMS CDC dipende dai log delle transazioni del database di origine. Durante la fase di replica in corso, DMS applica le modifiche utilizzando un metodo di applicazione transazionale, come segue:

  1. DMS legge le modifiche dal registro delle transazioni, dall'origine nella memoria dell'istanza del database di replica.
  2. DMS traduce le modifiche e quindi le trasmette a un componente di ordinamento.
  3. Il componente di ordinamento ordina le transazioni in ordine di commit e quindi le inoltra alla destinazione, in sequenza.

Se la velocità di modifica è elevata nel DB di origine, questo processo può richiedere del tempo. Potresti riscontrare un picco nelle metriche di latenza target del CDC quando DMS riceve un carico di lavoro elevato in entrata dal DB di origine.

DMS utilizza un metodo di replica a thread singolo per elaborare le modifiche CDC. DMS fornisce l'impostazione a livello di attività BatchApplyEnabled per elaborare rapidamente le modifiche su una destinazione utilizzando batch. BatchApplyEnabled è utile se hai un carico di lavoro elevato sul DB di origine e un'attività con una latenza CDC target elevata. Per impostazione predefinita, DMS disattiva BatchApplySetting. Puoi attivarlo utilizzando AWS Command Line Interface (AWS CLI).

Come funziona l'applicazione in batch

Se si esegue un'operazione con BatchApplyEnabled, DMS elabora le modifiche nel modo seguente:

  1. DMS raccoglie le modifiche in batch dai registri delle transazioni del database di origine.
  2. DMS crea una tabella denominata tabella delle modifiche nette, con tutte le modifiche del batch.
  3. Questa tabella si trova nella memoria dell'istanza database di replica e viene trasmessa all'istanza database di destinazione.
  4. DMS applica un algoritmo delle modifiche di rete che analizza tutte le modifiche dalla tabella delle modifiche nette alla tabella di destinazione effettiva.

Ad esempio, se esegui un'attività DMS con BatchApplyEnabled e hai un nuovo inserimento di riga, dieci aggiornamenti a quella riga e un'eliminazione per quella riga in un singolo batch, DMS elimina tutte queste transazioni e non le trasferisce. Lo fa perché alla fine la riga viene eliminata e non esiste più. Questo processo riduce il numero di transazioni effettive applicate all'obiettivo.

BatchApplyEnabled applica l'algoritmo delle modifiche nette a livello di riga di una tabella all'interno di un batch di una particolare attività. Pertanto, se il database di origine presenta modifiche frequenti (aggiornamento, eliminazione e inserimento) o una combinazione di tali carichi di lavoro sulle stesse righe, è possibile ottenere un utilizzo ottimale da BatchApplyEnabled. Ciò riduce al minimo le modifiche da applicare all'obiettivo. Se il batch raccolto è unico nelle modifiche (aggiorna/elimina/inserisci modifiche per record di riga diversi), il processo dell'algoritmo della tabella delle modifiche di rete non può filtrare alcun evento. Di conseguenza, tutti gli eventi batch vengono applicati sulla destinazione in modalità batch. Le tabelle devono avere una chiave primaria o una chiave univoca affinché l'applicazione in batch funzioni.

DMS fornisce anche l'impostazione BatchApplyPreserveTransaction per l'ottimizzazione dell'elaborazione delle modifiche. Se si attiva BatchApplyEnabled e poi BatchApplyPreserveTransaction si attiva, per impostazione predefinita. Se lo imposti su true, l'integrità transazionale viene preservata. È garantito che un batch contenga tutte le modifiche all'interno di una transazione dall'origine. Questa impostazione si applica solo agli endpoint di destinazione Oracle.

Nota: Presta attenzione ai vantaggi e agli svantaggi di questa impostazione. Quando l'impostazione BatchApplyPreserveTransaction è impostata su true, DMS acquisisce l'intera transazione di lunga durata nella memoria dell'istanza database di replica. Questa operazione viene eseguita in base alle impostazioni delle attività MemoryLimitTotal e MemoryKeepTime e, se necessario, effettua le operazioni di cambio prima di inviare le modifiche alla tabella delle modifiche nette. Quando l'impostazione BatchApplyPreserveTransaction è impostata su false, le modifiche di una singola transazione possono estendersi su più batch. Ciò può comportare la perdita di dati se applicato parzialmente, ad esempio a causa dell'indisponibilità del database di destinazione.

Per ulteriori informazioni sulla latenza DMS e sul processo di applicazione in batch, consulta la Parte 2 e la Parte 3 dei blog Debugging your AWS DMS migations.

Casi d'uso per l'applicazione in batch

È possibile utilizzare l'applicazione in batch nelle seguenti circostanze:

  • L'attività presenta un numero elevato di transazioni acquisite dall'origine e ciò causa la latenza dell'obiettivo.
  • L'attività ha un carico di lavoro di origine che è una combinazione di inserimento, aggiornamento ed eliminazione sulle stesse righe.
  • Nessun requisito per mantenere una rigorosa integrità referenziale sul bersaglio (FK disabilitati).

Limitazioni

L'applicazione in batch presenta attualmente le seguenti limitazioni**: **

Risoluzione

Nota: Se ricevi errori durante l'esecuzione dei comandi AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di AWS.

BatchApplySetting è disabilitato per impostazione predefinita. Puoi attivare questa impostazione utilizzando l'interfaccia a riga di comando di AWS o la console AWS DMS. Completa le seguenti attività di configurazione sul tuo sistema prima di abilitare l'impostazione batch:

Verifica lo stato delle impostazioni batch di un'attività esistente

  1. Apri la console AWS DMS.
  2. Dal pannello di navigazione, scegli Attività di migrazione del database
  3. Scegli l'attività, quindi scegli Task Setting (JSON). Nel formato JSON, BatchApplyEnabled è elencato con lo stato disabilitato.

Attiva l'impostazione batch utilizzando l'interfaccia a riga di comando di AWS

  1. Apri il sistema con l'interfaccia a riga di comando AWS installata.
  2. Esegui il comando aws configure per aprire il prompt dell'interfaccia a riga di comando di AWS.
  3. Inserisci l'ID della tua chiave di accesso AWS e premi Invio.
  4. Inserisci l'ID della tua chiave segreta AWS e quindi premi Invio.
  5. Inserisci il nome della regione delle tue risorse DMS, quindi premi Invio.
  6. Immettete il formato di output e premi Invio.
  7. Esegui il comando modify-replication-task con l'ARN dell'operazione e le condizioni di impostazione del batch.

Nota: Verificare che l'attività sia interrotta prima di modificarla. Modifica l'ARN con il seguente comando in base all'attività, quindi eseguilo per modificare l'impostazione dell'attività.

Dopo che il comando è stato eseguito correttamente nell'interfaccia a riga di comando di AWS, apri la console DMS e controlla nuovamente lo stato delle impostazioni batch della tua attività. BatchApplyEnabled è ora elencato come “abilitato” in Impostazione dell'attività (JSON).

Ora puoi avviare l'attività DMS e osservare le prestazioni della migrazione.

aws dms modify-replication-task --replication-task-arn arn:aws:dms:us-east-1:123456789123:task:4VUCZ6ROH4ZYRIA25M3SE6NXCM --replication-task-settings "{\"TargetMetadata\":{\"BatchApplyEnabled\":true}}"

Attiva l'impostazione batch utilizzando la console AWS DMS

  1. Apri la console AWS DMS.
  2. Dal pannello di navigazione, scegli Attività di migrazione del database.
  3. Scegli l'attività, quindi scegli Modifica.
  4. Dalla sezione Impostazioni attività, scegli l'editor JSON.
  5. Modifica le impostazioni delle attività che desideri modificare. Ad esempio, dalla sezione TargetMetadata, modifica BatchApplyEnabled su true (l'impostazione predefinita è false).
  6. Fai clic su salva per modificare l'attività.

Verifica che le modifiche abbiano avuto effetto seguendo questi passaggi:

  1. Dalla pagina Elenco attività, scegli l'attività che hai modificato.
  2. Dalla scheda Dettagli della panoramica, espandi Impostazioni attività (JSON).
  3. Rivedi le impostazioni dell'attività.

Risoluzione dei problemi relativi a CDCLatencyTarget high dopo l'esecuzione dell'operazione in modalità batch

Se CDCLatencyTarget è elevato dopo l'esecuzione dell'operazione in modalità batch, la latenza potrebbe essere causata da quanto segue:

  • Transazione a lungo termine in linea con l'obiettivo a causa della mancanza di un indice primario e secondario
  • Disponibilità di risorse insufficiente per elaborare il carico di lavoro previsto
  • Elevato conflitto di risorse sull'istanza di replica DMS

Segui le best practice del DMS per risolvere questi problemi.


Informazioni correlate

Monitoraggio delle attività di AWS DMS

Come creare script per la migrazione di un database

Automazione delle attività di migrazione di AWS DMS

Come posso creare endpoint di origine o di destinazione utilizzando AWS DMS?

Modifica delle impostazioni di ottimizzazione dell'elaborazione

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa