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à.
AWS Convalida dei dati DMS
Argomenti
- Statistiche delle attività di replica
- Statistiche sulle attività di replica con Amazon CloudWatch
- Nuova convalida delle tabelle durante un'attività
- Utilizzo dell'editor JSON per modificare le regole di convalida
- Attività di sola convalida
- Risoluzione dei problemi
- Prestazioni di convalida di Redshift
- Limitazioni
- Convalida dei dati di destinazione Amazon S3
AWS DMS fornisce supporto per la convalida dei dati per garantire che i dati siano stati migrati con precisione dall'origine alla destinazione. Se abilitata, la convalida inizia immediatamente dopo il pieno carico di una tabella. La convalida confronta le modifiche incrementali di un'attività abilitata CDC man mano che si verificano.
Durante la convalida dei dati, AWS DMS confronta ogni riga dell'origine con la riga corrispondente nella destinazione, verifica che le righe contengano gli stessi dati e segnala eventuali discrepanze. A tale scopo, vengono eseguite le query appropriate AWS DMS per recuperare i dati. Tieni presente che queste query utilizzano risorse aggiuntive all'origine e alla destinazione, nonché risorse di rete aggiuntive.
Per un'attività di sola CDC con convalida abilitata, tutti i dati preesistenti in una tabella vengono convalidati prima di iniziare la convalida di nuovi dati.
La convalida dei dati funziona con i seguenti database di origine ovunque li AWS DMS supporti come endpoint di origine:
-
Oracle
-
Database compatibile con PostgreSQL (PostgreSQL, Aurora PostgreSQL o Aurora serverless per PostgreSQL)
-
Database compatibile con MySQL (MySQL, MariaDB, Aurora MySQL o Aurora serverless per MySQL)
-
Microsoft SQL Server
-
IBM Db2 LUW
La convalida dei dati funziona con i seguenti database di destinazione ovunque li AWS DMS supporti come endpoint di destinazione:
-
Oracle
-
Database compatibile con PostgreSQL (PostgreSQL, Aurora PostgreSQL o Aurora serverless per PostgreSQL)
-
Database compatibile con MySQL (MySQL, MariaDB, Aurora MySQL o Aurora serverless per MySQL)
-
Microsoft SQL Server
-
IBM Db2 LUW
-
Amazon Redshift
-
Amazon S3. Per informazioni sulla convalida dei dati di destinazione di Amazon S3, consulta Convalida dei dati di destinazione Amazon S3.
Per ulteriori informazioni sugli endpoint supportati, consulta Utilizzo degli endpoint AWS DMS.
La convalida dei dati richiede tempo aggiuntivo rispetto alla quantità necessaria per la migrazione. Il tempo aggiuntivo necessario dipende dalla quantità di dati migrata.
Per ulteriori informazioni su queste impostazioni, consultare Impostazioni delle attività di convalida dei dati.
Per un esempio di impostazioni dell'attività ValidationSettings
in un file JSON, consulta Esempio di impostazioni delle attività.
Statistiche delle attività di replica
Quando la convalida dei dati è abilitata, AWS DMS fornisce le seguenti statistiche a livello di tabella:
-
ValidationState—Lo stato di convalida della tabella. Il parametro può avere i seguenti valori:
Non abilitato: la convalida non è abilitata per la tabella nell'attività di migrazione.
Record in sospeso: alcuni record della tabella sono in attesa di convalida.
Record non corrispondenti: alcuni record della tabella non corrispondono tra l'origine e la destinazione. Una mancata corrispondenza può verificarsi per una serie di motivi. Per ulteriori informazioni, consulta la tabella
awsdms_control.awsdms_validation_failures_v1
sull'endpoint di destinazione.Record sospesi: alcuni record della tabella non possono essere convalidati.
Nessuna chiave primaria: la tabella non può essere convalidata perché non ha una chiave primaria.
Errore della tabella: la tabella non è stata convalidata perché si trova in uno stato di errore e alcuni dati non sono stati migrati.
Convalidata: tutte le righe della tabella sono state convalidate. Se la tabella viene aggiornata, lo stato può variare da Validated (Convalidata).
Errore: la tabella non può essere convalidata a causa di un errore imprevisto.
Convalida in sospeso: la tabella è in attesa di convalida.
Preparazione della tabella: la preparazione della tabella abilitata nell'attività di migrazione per la convalida.
Riconvalida in sospeso: tutte le righe della tabella sono in attesa di convalida dopo l'aggiornamento della tabella.
-
ValidationPending—Il numero di record che sono stati migrati verso la destinazione, ma che non sono ancora stati convalidati.
-
ValidationSuspended—Il numero di record che AWS DMS non è possibile confrontare. Ad esempio, se un record all'origine viene costantemente aggiornato, non è AWS DMS possibile confrontare l'origine e la destinazione.
-
ValidationFailed—Il numero di record che non hanno superato la fase di convalida dei dati.
Per un esempio di impostazioni dell'attività ValidationSettings
in un file JSON, consulta Esempio di impostazioni delle attività.
È possibile visualizzare le informazioni sulla convalida dei dati utilizzando la console AWS CLI, l'o l'API. AWS DMS
Nella console, puoi scegliere di convalidare un'attività quando la crei o la modifichi. Per visualizzare il report di convalida dei dati utilizzando la console, scegli l'attività nella pagina Tasks (Attività) e scegli la scheda Table statistics (Statistiche tabella) nella sezione dei dettagli.
Per avviare la convalida dei dati tramite la CLI, imposta il parametro
EnableValidation
sutrue
durante la creazione o la modifica di un'attività. Nell'esempio seguente viene creata un'attività e abilitata la convalida dei dati.create-replication-task --replication-task-settings '{"ValidationSettings":{"EnableValidation":true}}' --replication-instance-arn arn:aws:dms:us-east-1:5731014: rep:36KWVMB7Q --source-endpoint-arn arn:aws:dms:us-east-1:5731014: endpoint:CSZAEFQURFYMM --target-endpoint-arn arn:aws:dms:us-east-1:5731014: endpoint:CGPP7MF6WT4JQ --migration-type full-load-and-cdc --table-mappings '{"rules": [{"rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": {"schema-name": "data_types", "table-name": "%"}, "rule-action": "include"}]}'
Utilizza il comando
describe-table-statistics
per ricevere il report di convalida dei dati in formato JSON. Il comando seguente mostra il report di convalida dei dati.aws dms describe-table-statistics --replication-task-arn arn:aws:dms:us-east-1:5731014: rep:36KWVMB7Q
Il report dovrebbe essere simile al seguente.
{ "ReplicationTaskArn": "arn:aws:dms:us-west-2:5731014:task:VFPFTYKK2RYSI", "TableStatistics": [ { "ValidationPendingRecords": 2, "Inserts": 25, "ValidationState": "Pending records", "ValidationSuspendedRecords": 0, "LastUpdateTime": 1510181065.349, "FullLoadErrorRows": 0, "FullLoadCondtnlChkFailedRows": 0, "Ddls": 0, "TableName": "t_binary", "ValidationFailedRecords": 0, "Updates": 0, "FullLoadRows": 10, "TableState": "Table completed", "SchemaName": "d_types_s_sqlserver", "Deletes": 0 } }
Utilizzando l' AWS DMS API, crea un'attività utilizzando l'CreateReplicationTaskazione e imposta il
EnableValidation
parametro su true per convalidare i dati migrati dall'attività. Utilizza l'DescribeTableStatisticsazione per ricevere il rapporto di convalida dei dati in formato JSON.
Statistiche sulle attività di replica con Amazon CloudWatch
Quando Amazon CloudWatch è abilitato, AWS DMS fornisce le seguenti statistiche sulle attività di replica:
ValidationSucceededRecordCount— Numero di righe AWS DMS convalidate, al minuto.
ValidationAttemptedRecordCount— Numero di righe in cui è stata tentata la convalida, al minuto.
ValidationFailedOverallCount— Numero di righe in cui la convalida non è riuscita.
ValidationSuspendedOverallCount— Numero di righe in cui la convalida è stata sospesa.
ValidationPendingOverallCount— Numero di righe in cui la convalida è ancora in sospeso.
ValidationBulkQuerySourceLatency— AWS DMS può eseguire la convalida dei dati in blocco, specialmente in alcuni scenari durante una replica a pieno carico o continua quando sono presenti molte modifiche. Questo parametro indica la latenza necessaria per leggere una serie di dati in blocco dall'endpoint di origine.
ValidationBulkQueryTargetLatency— AWS DMS può eseguire la convalida dei dati in blocco, specialmente in alcuni scenari durante una replica a pieno carico o in corso quando sono presenti molte modifiche. Questo parametro indica la latenza necessaria per leggere una serie di dati in blocco sull'endpoint di destinazione.
ValidationItemQuerySourceLatency— Durante la replica in corso, la convalida dei dati può identificare le modifiche in corso e convalidare tali modifiche. Questo parametro indica la latenza nella lettura di tali modifiche dall'origine. La convalida è in grado di eseguire più query rispetto al necessario, in base al numero di modifiche, in caso di errori durante la convalida.
ValidationItemQueryTargetLatency— Durante la replica in corso, la convalida dei dati può identificare le modifiche in corso e convalidare le modifiche riga per riga. Questo parametro offre la latenza nella lettura di tali modifiche dalla destinazione. La convalida è in grado di eseguire più query rispetto al necessario, in base al numero di modifiche, in caso di errori durante la convalida.
Per raccogliere informazioni sulla convalida dei dati dalle statistiche CloudWatch abilitate, seleziona Abilita CloudWatch i registri quando crei o modifichi un'attività utilizzando la console. Quindi, per visualizzare le informazioni sulla convalida dei dati e garantire che i dati siano stati migrati accuratamente dall'origine alla destinazione, procedi come segue.
Scegli l'attività nella pagina Attività di migrazione del database.
Scegli la scheda CloudWatch Metriche.
Seleziona Convalida dal menu a discesa.
Nuova convalida delle tabelle durante un'attività
Mentre un'attività è in esecuzione, puoi richiedere di eseguire la convalida AWS DMS dei dati.
AWS Management Console
-
Accedi AWS Management Console e apri la AWS DMS console all'indirizzo https://console.aws.amazon.com/dms/v2/
. Se hai effettuato l'accesso come utente AWS Identity and Access Management (IAM), assicurati di disporre delle autorizzazioni di accesso appropriate AWS DMS. Le autorizzazioni richieste, vedi. IAMautorizzazioni necessarie per l'uso AWS DMS
-
Scegliere Tasks (Attività) nel riquadro di navigazione.
-
Scegli l'attività in esecuzione che ha la tabella che desideri convalidare nuovamente.
Selezionare la scheda Table Statistics (Statistiche tabella).
-
Scegliere la tabella da riconvalidare (è possibile scegliere fino a 10 tabelle contemporaneamente). Se l'attività non è più in esecuzione, non è possibile convalidare nuovamente la tabella.
-
Scegli Revalidate (Convalida di nuovo).
Utilizzo dell'editor JSON per modificare le regole di convalida
Per aggiungere una regola di convalida a un'attività utilizzando l'editor JSON dalla AWS DMS console, procedi come segue:
-
Seleziona Attività di migrazione del database.
-
Seleziona l'attività dall'elenco delle attività di migrazione.
-
Se l'attività è in esecuzione, seleziona Interrompi dal menu a discesa Operazioni.
-
Una volta interrotta l'attività, seleziona Modifica dal menu a discesa Operazioni per modificarla.
-
Nella sezione Mappature delle tabelle seleziona Editor JSON e aggiungi la regola di convalida alle mappature delle tabelle.
Ad esempio, puoi aggiungere la regola di convalida seguente per eseguire una funzione di sostituzione sull'origine. In questo caso, se la regola di convalida rileva un byte nullo, lo convalida come spazio.
{ "rule-type": "validation", "rule-id": "1", "rule-name": "1", "rule-target": "column", "object-locator": { "schema-name": "Test-Schema", "table-name": "Test-Table", "column-name": "Test-Column" }, "rule-action": "override-validation-function", "source-function": "REPLACE(${column-name}, chr(0), chr(32))", "target-function": "${column-name}" }
Attività di sola convalida
È possibile creare attività di sola convalida per visualizzare in anteprima e convalidare i dati senza eseguire alcuna migrazione o replica dei dati. Per creare un'attività di sola convalida, configura le impostazioni EnableValidation
e ValidationOnly
su true
. Quando si abilita ValidationOnly
, si applicano requisiti aggiuntivi. Per ulteriori informazioni, consulta Impostazioni delle attività di convalida dei dati.
Per una migrazione di tipo solo pieno carico, l'attività di sola convalida viene completata molto più rapidamente dell'equivalente CDC quando vengono restituiti molti errori. Tuttavia, le modifiche all'endpoint di origine o di destinazione vengono segnalate come errori per la modalità di pieno carico, un possibile svantaggio.
Un'attività di sola convalida CDC ritarda la convalida in base alla latenza media e riprova gli errori più volte prima di segnalarli. Se la maggior parte dei confronti dei dati genera errori, un'operazione di sola convalida per la modalità CDC è molto lenta, il che rappresenta un potenziale svantaggio.
Un'attività di sola convalida deve essere impostata nella stessa direzione dell'attività di replica, in particolare per CDC. Questo perché l'attività di sola convalida CDC rileva quali righe sono state modificate e devono essere riconvalidate in base al log delle modifiche sull'origine. Se la destinazione è specificata come origine, riconosce solo le modifiche inviate alla destinazione dal DMS e non è garantito che rilevi gli errori di replica.
Sola convalida pieno carico
A partire dalla AWS DMS versione 3.4.6 e successive, un'attività di sola convalida a pieno carico confronta rapidamente tutte le righe delle tabelle di origine e di destinazione in un unico passaggio, segnala immediatamente eventuali errori e quindi si spegne. La convalida non viene mai sospesa a causa di errori in questa modalità ed è ottimizzata per la velocità. Tuttavia, le modifiche all'endpoint di origine o di destinazione vengono segnalate come errori.
Nota
A partire dalla AWS DMS versione 3.4.6 e successive, questo comportamento di convalida si applica anche all'attività di migrazione a pieno carico con la convalida abilitata.
Sola convalida CDC
Un'attività di sola convalida CDC convalida tutte le righe esistenti tra le tabelle di origine e di destinazione per un nuovo avvio. Inoltre, un'attività di sola convalida CDC viene eseguita continuamente, riconvalida le modifiche della replica continua, limita il numero di errori segnalati per ogni passaggio e riprova le righe non corrispondenti prima di restituire l'esito negativo. È ottimizzata per prevenire falsi positivi.
La convalida di una tabella (o dell'intera attività) viene sospesa in caso di violazione delle soglie
FailureMaxCount
o TableFailureMaxCount
. Ciò vale anche per un'attività di migrazione CDC o pieno carico e CDC con la convalida abilitata. Inoltre, un'attività di CDC con la convalida abilitata ritarda la riconvalida per ogni riga modificata in base alla latenza media di origine e di destinazione.
Tuttavia un'attività di sola convalida CDC non migra i dati e non ha alcuna latenza. Per impostazione predefinita, imposta ValidationQueryCdcDelaySeconds
su 180. Inoltre, puoi aumentare la quantità per tenere conto degli ambienti ad alta latenza e prevenire i falsi positivi.
Casi d'uso di sola convalida
I casi d'uso per suddividere la parte di convalida dei dati di un'attività di migrazione o replica in un'attività di sola convalida separata includono, a titolo esemplificativo ma non esaustivo, i seguenti:
-
Controlla esattamente quando avviene la convalida: le query di convalida aggiungono un carico agli endpoint di origine e di destinazione. Quindi, può essere utile migrare o replicare prima i dati in un'attività e poi convalidare i risultati in un'altra attività.
-
Riduci il carico sull'istanza di replica: suddividere la convalida dei dati per eseguirla sulla propria istanza può essere vantaggioso.
-
Ottieni rapidamente quante righe non corrispondono in un determinato momento: ad esempio appena prima o durante l'interruzione della produzione di una finestra di manutenzione per un endpoint di destinazione, puoi creare un'attività di sola convalida pieno carico per ottenere una risposta alla tua domanda.
-
Quando si prevedono errori di convalida per un'attività di migrazione con un componente CDC, ad esempio, se si esegue la migrazione di Oracle
varchar2
a PostgreSQLjsonb
, la convalida CDC continua a riprovare queste righe non riuscite e limita il numero di errori segnalati ogni volta. Tuttavia, puoi creare un'attività di sola convalida pieno carico e ottenere una risposta più rapida. -
Hai sviluppato uno script/utilità per il ripristino dei dati che legge la tabella degli errori di convalida: consulta anche Risoluzione dei problemi. Un'attività di sola convalida pieno carico segnala rapidamente gli errori su cui lo script di ripristino dei dati può intervenire.
Per un esempio di impostazioni dell'attività ValidationSettings
in un file JSON, consulta Esempio di impostazioni delle attività.
Risoluzione dei problemi
Durante la convalida, AWS DMS crea una nuova tabella nell'endpoint di destinazione:. awsdms_control.awsdms_validation_failures_v1
Se un record entra nello ValidationFailedstato ValidationSuspendedo, AWS DMS scrive le informazioni diagnostiche su. awsdms_control.awsdms_validation_failures_v1
Puoi eseguire query sulla tabella per risolvere gli errori di convalida.
Per informazioni sulla modifica dello schema predefinito in cui viene creata la tabella sulla destinazione, consulta Impostazioni delle attività delle tabelle di controllo.
In seguito è riportata una descrizione della tabella awsdms_control.awsdms_validation_failures_v1
:
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
|
|
AWS DMS identificatore di attività. |
TABLE_OWNER |
VARCHAR(128) NOT NULL |
Schema (proprietario) della tabella. |
|
VARCHAR(128) NOT NULL |
Nome tabella. |
FAILURE_TIME |
DATETIME(3) NOT NULL |
Ora in cui si è verificato l'errore. |
KEY_TYPE |
VARCHAR(128) NOT NULL |
Riservato per uso futuro (il valore è sempre "Row") |
KEY |
TEXT NOT NULL |
Questa è la chiave primaria per il tipo di record row. |
FAILURE_TYPE |
VARCHAR(128) NOT NULL |
Gravità dell'errore di convalida. Può essere |
DETAILS |
VARCHAR(8000) NOT NULL |
Stringa in formato JSON di tutti i valori delle colonne di origine/destinazione che non corrispondono alla chiave specificata. |
Di seguito è riportata una query di esempio per una destinazione MySQL che mostrerà tutti gli errori di un'attività interrogando la tabella. awsdms_control.awsdms_validation_failures_v1
Nota che il nome dello schema e la sintassi della query varieranno tra le versioni del motore di destinazione. Il nome dell'attività deve essere l'ID risorsa esterna dell'attività. L'ID risorsa esterna dell'attività è l'ultimo valore nell'ARN dell'attività. Ad esempio, per un'attività con un valore ARN di arn:aws:dms:us-west-2:5599:task: VFPFKH4FJR3FTYKK2RYSI, l'ID risorsa esterna dell'attività è VFPFKH4FJR3FTYKK2RYSI.
select * from awsdms_validation_failures_v1 where TASK_NAME = 'VFPFKH4FJR3FTYKK2RYSI' TASK_NAME VFPFKH4FJR3FTYKK2RYSI TABLE_OWNER DB2PERF TABLE_NAME PERFTEST FAILURE_TIME 2020-06-11 21:58:44 KEY_TYPE Row KEY {"key": ["3451491"]} FAILURE_TYPE RECORD_DIFF DETAILS [[{'MYREAL': '+1.10106036e-01'}, {'MYREAL': '+1.10106044e-01'}],]
Puoi esaminare il campo DETAILS
per determinare quali colonne non corrispondono. Dopo aver ottenuto la chiave primaria del record non riuscito, puoi eseguire query sugli endpoint di origine e di destinazione per visualizzare quale parte del record non corrisponde.
Prestazioni di convalida di Redshift
Amazon Redshift si differenzia dai database relazionali in diversi modi, tra cui l'archiviazione a colonne, la MPP, la compressione dei dati e altri fattori. Queste differenze conferiscono a Redshift un profilo prestazionale diverso rispetto ai database relazionali.
Durante la fase di replica di pieno carico, la convalida utilizza le query di intervallo, con la dimensione dei dati determinata dall'impostazione PartitionSize
. Queste query basate su intervalli selezionano tutti i record dalla tabella di origine.
Per la replica continua, le query passano dal recupero dei record basato su intervalli a quello basato su singoli record. Il tipo di query viene determinato dinamicamente in base a più fattori, ad esempio:
Volume di query
Tipi di query DML sulla tabella di origine
Latenza delle attività
Numero totale di record
Impostazioni di convalida come
PartitionSize
A causa delle query di convalida, potresti riscontrare un carico aggiuntivo sul cluster Amazon Redshift. Dal momento che i fattori sopra indicati variano a seconda dei casi d'uso, è necessario esaminare le prestazioni delle query di convalida e ottimizzare il cluster e la tabella di conseguenza. Alcune opzioni per mitigare i problemi di prestazioni sono:
Riduci le impostazioni
PartitionSize
eThreadCount
per diminuire il carico di lavoro durante la convalida del pieno carico. Tieni presente che in tal modo si rallenta la convalida dei dati.Sebbene Redshift non applichi le chiavi primarie, AWS DMS si affida alle chiavi primarie per identificare in modo univoco i record sulla destinazione per la convalida dei dati. Se possibile, imposta la chiave primaria in modo che rispecchi la chiave di ordinamento affinché le query di convalida del pieno carico vengano eseguite più rapidamente.
Limitazioni
-
La convalida dei dati richiede che la tabella disponga di una chiave primaria o di un indice univoco.
Le colonne di chiave primaria non possono essere di tipo
CLOB
,BLOB
oBYTE
.-
Per le colonne chiave primaria di tipo
VARCHAR
oCHAR
, la lunghezza deve essere inferiore a 1024. È necessario specificare la lunghezza nel tipo di dati. Non è possibile utilizzare tipi di dati illimitati come chiave primaria per la convalida dei dati, -
Una chiave Oracle creata con la clausola
NOVALIDATE
non è considerata una chiave primaria o un indice univoco. -
Per una tabella Oracle senza chiave primaria e con solo una chiave univoca, le colonne con il vincolo univoco devono avere anche un vincolo
NOT NULL
.
-
La convalida dei valori NULL PK/UK non è supportata.
-
Se il confronto della colonna chiave primaria nell'istanza PostgreSQL di destinazione non è impostato su "C", l'ordine della chiave primaria è diverso rispetto a quello in Oracle. Se l'ordine è diverso tra PostgreSQL e Oracle, la convalida dei dati sui record ha esito negativo.
-
La convalida dei dati genera ulteriori query sui database di origine e di destinazione. Devi accertarti che entrambi i database dispongano di risorse sufficienti per gestire il carico aggiuntivo. in particolare per le destinazioni Redshift. Per ulteriori informazioni, consulta la sezione seguente: Prestazioni di convalida di Redshift.
-
La convalida dei dati non è supportata durante il consolidamento di diversi database in uno solo.
-
Per un endpoint Oracle di origine o di destinazione, utilizza DBMS_CRYPTO per convalidare i LOB AWS DMS . Se l'endpoint Oracle utilizza i LOB, devi concedere le autorizzazioni di esecuzione su dbms_crypto all'account utente utilizzato per accedere all'endpoint Oracle. Puoi effettuare questa operazione eseguendo l'istruzione riportata di seguito:
grant execute on sys.dbms_crypto to
dms_endpoint_user
; -
Se il database di destinazione viene modificato al di fuori della AWS DMS fase di convalida, le discrepanze potrebbero non essere segnalate con precisione. Questo risultato può verificarsi se una delle applicazioni scrive dati nella tabella di destinazione mentre AWS DMS esegue la convalida sulla stessa tabella.
-
Se una o più righe vengono modificate continuamente durante la convalida, non è AWS DMS possibile convalidarle.
-
Se AWS DMS rileva più di 10.000 record non riusciti o sospesi, interrompe la convalida. Prima di procedere, risolvi eventuali problemi sottostanti dei dati.
-
AWS DMS non supporta la convalida dei dati delle visualizzazioni.
-
AWS DMS non supporta la convalida dei dati quando vengono utilizzate le impostazioni delle attività di sostituzione dei caratteri.
AWS DMS non supporta la convalida del tipo Oracle LONG.
AWS DMS non supporta la convalida del tipo Oracle Spatial durante la migrazione eterogenea.
Per le limitazioni relative all'utilizzo della convalida della destinazione S3, consulta Limitazioni all'utilizzo della convalida della destinazione S3.