Come posso risolvere i problemi di mancata corrispondenza dei dati tra il database di origine e di destinazione in AWS DMS?
Una mia attività AWS Database Migration Service (AWS DMS) ha concluso la fase di migrazione con caricamento completo o replica continua. Tuttavia, i dati nel database di destinazione non corrispondono ai dati dell'origine.
Breve descrizione
Quando utilizzi AWS DMS per eseguire la migrazione di dati in un ambiente eterogeneo, potresti riscontrare una mancata corrispondenza dei dati per i seguenti motivi:
- Impostazioni LOB (Large Binary Object) errate
- Tipo di dati di origine o di destinazione non supportato
- Esito negativo della transazione DML (Data Manipulation Language) nel database di destinazione a causa di errori o eccezioni durante la replica CDC (Change Data Capture)
Se non utilizzi le impostazioni LOB corrette, i dati vengono troncati in base all'impostazione dell'attività LobMaxSize. Pertanto, la colonna LOB di destinazione non contiene esattamente gli stessi dati dell'origine.
Durante una migrazione eterogenea, AWS DMS converte il tipo di dati di origine in un tipo di dati interno. Dopodiché, AWS DMS converte i dati interni nel tipo di dati di destinazione. Poiché alcuni tipi di dati di origine e di destinazione non sono completamente supportati da AWS DMS, potresti riscontrare una mancata corrispondenza dei dati tra l'origine e la destinazione.
Risoluzione
Esegui alcune verifiche iniziali
Se utilizzi un'attività di solo caricamento completo, assicurati che la migrazione sia conclusa e che l'attività risulti interrotta.
Se utilizzi un'attività di caricamento completo e CDC o un'attività di sola CDC, controlla le metriche CDCLatencySource e CDCLatencyTarget di Amazon CloudWatch. Verifica che non vi sia latenza.
Verifica che non vi siano altre applicazioni connesse ai database di origine o di destinazione perché ciò può causare la manipolazione dei dati. Ad esempio, se stai eseguendo un'attività di solo caricamento completo e un'altra applicazione modifica la data di origine, ciò comporta una mancata corrispondenza dei dati con la destinazione. Oppure se un'altra applicazione scrive dati nella tabella di destinazione migrata sul database di destinazione, ciò comporta una mancata corrispondenza dei dati tra la destinazione e l'origine.
Esegui una query sulla tabella awsdms_validation_failures_v1 della destinazione
Se l'obiettivo è la coerenza dei dati, attiva la convalida quando crei l'attività AWS DMS.
Nota: se una tabella contiene colonne LOB e utilizzi la modalità LOB limitata per la migrazione, devi impostare ValidationPartialLobSize sullo stesso valore di LobMaxSize.
Risoluzione del problema quando la convalida è attivata
Se la convalida è attiva, controlla la tabella awsdms_Validation_failures_v1 nel database di destinazione. Se un record entra nello stato ValidationSuspended o ValidationFailed durante la migrazione, AWS DMS scrive le informazioni diagnostiche in awsdms_validation_failures_v1. Per risolvere gli errori di convalida, esegui un comando simile al seguente:
select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';
Per ottenere informazioni sull'errore, controlla la colonna Details (Dettagli) nell'output. Utilizza la colonna Key (Chiave) per confrontare i dati del record tra l'origine e la destinazione. Per ulteriori informazioni sulla risoluzione dei problemi relativi alla convalida dei dati, consulta Risoluzione dei problemi.
Risoluzione dei problemi quando la convalida è disattivata
Se non hai attivato la convalida per l'attività AWS DMS, crea un'attività di sola convalida.
Per una migrazione una tantum, utilizza la funzionalità di sola convalida con caricamento completo per confrontare rapidamente tutte le righe tra l'origine e la destinazione.
Per la replica continua, utilizza l'attività di sola convalida con CDC. Un'attività di sola convalida con CDC convalida le righe esistenti tra la tabella di origine e di destinazione. L'attività continua con le modifiche in corso man mano che si presentano e segnala gli errori di convalida dei dati.
Verifica le limitazioni nei dati di origine e di destinazione
Dopo aver identificato i dati non corrispondenti, controlla le limitazioni associate ai relativi tipi di dati nell'origine e nella destinazione. Ad esempio, quando utilizzi PostgreSQL come origine, non puoi eseguire la migrazione dei tipi di dati ENUM.
Verifica la presenza di errori nel log dell'attività
Controlla il log dell'attività per verificare gli eventuali errori riscontrati nel momento in cui la convalida ha esito negativo. Oppure verifica le tabelle di controllo per visualizzare le eccezioni registrate durante la fase di replica dei dati.
Risolvi i dati non corrispondenti causati dal troncamento
Quando utilizzi la modalità LOB limitata, AWS DMS prealloca la memoria nell'istanza di replica. Dopodiché, AWS DMS utilizza l'impostazione dell'attività LobMaxSize per caricare i dati LOB in blocco. AWS DMS tronca i LOB che superano la dimensione massima dei LOB, quindi invia un messaggio di avviso al file di log.
Controlla nei file di log per i messaggi di avviso che mostrano il troncamento dei dati, quindi controlla la dimensione massima della colonna LOB corrispondente. Definisci un valore LobMaxSize più grande della dimensione della colonna LOB in modo che i dati non vengano troncati. Utilizza uno script di supporto diagnostico per individuare le tabelle che contengono dati LOB, quindi esegui una query sulle dimensioni della colonna LOB.
Se la dimensione massima della colonna LOB è superiore a 100 MB, utilizza la modalità LOB completo o LOB in linea per interrompere il troncamento dei dati della colonna LOB.
Informazioni correlate
Impostazione del supporto LOB per i database di origine in un'attività AWS DMS
- Argomenti
- Migrazione e modernizzazione
- Lingua
- Italiano
