New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Come posso utilizzare la funzione di applicazione batch di DMS per migliorare le prestazioni di replica CDC?
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:
- DMS legge le modifiche dal registro delle transazioni, dall'origine nella memoria dell'istanza del database di replica.
- DMS traduce le modifiche e quindi le trasmette a un componente di ordinamento.
- 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:
- DMS raccoglie le modifiche in batch dai registri delle transazioni del database di origine.
- DMS crea una tabella denominata tabella delle modifiche nette, con tutte le modifiche del batch.
- Questa tabella si trova nella memoria dell'istanza database di replica e viene trasmessa all'istanza database di destinazione.
- 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**: **
- Per impostazione predefinita, il target Amazon Redshift utilizza l'applicazione in batch. Il target di Amazon Simple Storage Service (Amazon S3) è obbligato a utilizzare l'applicazione transazionale.
- L'applicazione in batch può funzionare solo su tabelle con chiave primaria/indice univoco. Per le tabelle senza chiave primaria/indice univoco, l'applicazione in blocco applicherà l'inserimento solo in modalità bulk, ma esegue aggiornamenti ed eliminazioni uno per uno. Se la tabella contiene una chiave primaria/un indice univoco ma viene rilevata la modifica della modalità uno per uno, consulta Come posso risolvere il motivo per cui Amazon Redshift è passato alla modalità uno per uno a causa di un'operazione di massa non riuscita durante un'attività di AWS DMS?
- Quando le colonne LOB sono incluse nella replica, è possibile utilizzare BatchApplyEnabled solo in modalità LOB limitata. Per ulteriori informazioni, consulta Impostazioni delle attività relative ai metadati di Target.
- Quando BatchApplyEnabled è impostato su true, AWS DMS genera un messaggio di errore se una tabella di destinazione presenta un vincolo univoco.
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:
- Installa e configura la versione più recente di AWS CLI.
- Crea un utente IAM con accesso programmatico.
Verifica lo stato delle impostazioni batch di un'attività esistente
- Apri la console AWS DMS.
- Dal pannello di navigazione, scegli Attività di migrazione del database
- 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
- Apri il sistema con l'interfaccia a riga di comando AWS installata.
- Esegui il comando aws configure per aprire il prompt dell'interfaccia a riga di comando di AWS.
- Inserisci l'ID della tua chiave di accesso AWS e premi Invio.
- Inserisci l'ID della tua chiave segreta AWS e quindi premi Invio.
- Inserisci il nome della regione delle tue risorse DMS, quindi premi Invio.
- Immettete il formato di output e premi Invio.
- 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
- Apri la console AWS DMS.
- Dal pannello di navigazione, scegli Attività di migrazione del database.
- Scegli l'attività, quindi scegli Modifica.
- Dalla sezione Impostazioni attività, scegli l'editor JSON.
- Modifica le impostazioni delle attività che desideri modificare. Ad esempio, dalla sezione TargetMetadata, modifica BatchApplyEnabled su true (l'impostazione predefinita è false).
- Fai clic su salva per modificare l'attività.
Verifica che le modifiche abbiano avuto effetto seguendo questi passaggi:
- Dalla pagina Elenco attività, scegli l'attività che hai modificato.
- Dalla scheda Dettagli della panoramica, espandi Impostazioni attività (JSON).
- 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

Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- Come posso migliorare le prestazioni dello strumento di conversione AWS SCT quando utilizzo AWS DMS?AWS UFFICIALEAggiornata 9 mesi fa