Perché AWS DMS non ha eseguito la migrazione dei dati dal mio endpoint di origine Amazon S3 anche se la mia attività AWS DMS ha dato esito positivo?

5 minuti di lettura
0

La mia attività AWS Database Migration Service (AWS DMS) ha esito positivo, ma non esegue la migrazione dei dati dal mio endpoint di origine Amazon Simple Storage Service (Amazon S3). Desidero risolvere il problema.

Risoluzione

Esistono diversi motivi per cui un'attività AWS DMS dà esito positivo, ma non esegue la migrazione dei dati. Completa la risoluzione in base al caso d'uso.

Lo stato dell'attività è "Caricamento completo, replica in corso", ma l'attività AWS DMS carica i dati sulla destinazione

Verifica che il percorso S3 definito per l'endpoint di origine sia corretto. Nel log di replica, identifica le voci che mostrano che AWS DMS non riesce a trovare i file di dati nel percorso S3.

Esempio di voce del log di replica:

[SOURCE_UNLOAD ]I: Unload finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows sent. (streamcomponent.c:3396)
[TARGET_LOAD ]I: Load finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows received. 0 rows skipped. Volume transferred 0. (streamcomponent.c:3667)

Amazon S3 archivia il file di dati per la fase di caricamento completo (data.csv) e il file di dati per le modifiche in corso (change_data.csv) nel seguente formato:

  • S3-bucket/dms-folder/sub-folder/dms_schema/dms_table/data.csv
  • S3-bucket/dms-folder/sub-folder/dms-cdc-path/dms-cdc-sub-path/change_data.csv

Per trovare i file di dati, l'endpoint di origine S3 utilizza la cartella del bucket, il percorso di acquisizione dei dati (CDC) e i campi della struttura delle tabelle.

Negli esempi di percorso di file precedenti, dms-folder/sub-folder è la cartella del bucket. Il percorso CDC che inserisci quando crei l'endpoint di origine S3 è dms-cdc-path/dms-cdc-sub-path.

Esempio di struttura delle tabelle che utilizza l'esempio di percorso del file:

{
  "TableCount": 1,
  "Tables": [
    {
      "TableColumns": […],
      "TableColumnsTotal": "1",
      "TableName": "dms_table",
      "TableOwner": "dms_schema",
      "TablePath": "dms_schema/dms_table/"
    }
  ]
}

Importante: non includere il percorso della cartella del bucket dms-folder/sub-folder nel percorso TablePath della struttura delle tabelle.

Quando specifichi la configurazione dell'endpoint, la cartella del bucket è opzionale. Se specifichi una cartella del bucket, il percorso CDC e il percorso TablePath devono trovarsi nella stessa cartella in Amazon S3. Se non specifichi la cartella del bucket, il percorso TablePath e il percorso CDC si trovano direttamente nel bucket S3.

Per la cartella del bucket per l'endpoint di origine S3 può essere scelta qualsiasi directory compresa tra il nome del bucket e il nome dello schema della struttura delle tabelle. Nel precedente esempio di struttura delle tabelle, la directory della cartella è dms-schema. Se non hai una gerarchia di cartelle nel bucket, lascia il campo vuoto.

Nota: le cartelle del bucket e i percorsi CDC possono essere cartelle singole o contenere sottocartelle, ad esempio dms-folder o dms-folder/sub-folder.

Se l'impostazione dell'attività DMS utilizza un endpoint di origine S3, devi includere lo schema e la tabella nella mappatura delle tabelle. Lo schema e la tabella sono necessari per eseguire correttamente la migrazione dei dati verso la destinazione. Per ulteriori informazioni, consulta Definizione di tabelle esterne per Amazon S3 come origine per AWS DMS.

Se utilizzi Drop tables on target come modalità di preparazione della tabella per l'attività, DMS crea la tabella di destinazione dms_schema.dms_table.

Esempio di comando per la creazione di una tabella di destinazione:

CREATE TABLE 'dms_schema'.'dms_table' (...);

Nota: i nomi delle cartelle e degli oggetti in Amazon S3 fanno distinzione tra maiuscole e minuscole. Utilizza le maiuscole e le minuscole quando specifichi i nomi delle cartelle e degli oggetti nell'endpoint S3.

Lo stato dell'attività è "Caricamento completo, replica in corso", ma nella sezione Statistiche della tabella non è presente alcuna tabella

Quando utilizzi la modalità Drop tables on target, AWS DMS potrebbe non creare una tabella nell'endpoint di destinazione. Il problema può dipendere da un percorso S3 errato o da un tipo di dati non supportato.

Verifica che il percorso S3 per l'endpoint di origine sia corretto. Quindi verifica che l'endpoint S3 supporti il tipo di dati.

Verifica se il filtro definito dalla mappatura delle tabelle dell'attività DMS è la causa delle tabelle mancanti. Assicurati di aver definito la tabella richiesta nella mappatura delle tabelle dell'attività nella struttura delle tabelle dell'endpoint di origine S3.

Lo stato dell'attività è "In esecuzione" e l'attività DMS ha creato la tabella nell'endpoint di destinazione, ma non ha caricato i dati

Utilizza il log di replica per individuare gli errori se AWS DMS non riesce a ottenere i dati dal percorso S3. Per ottenere log dettagliati, modifica il livello di log SOURCE_CAPTURE da Default (Predefinito) a Detailed Debug (Debug dettagliato).

Esempio di log:

[SOURCE_CAPTURE ]E: No response body. Response code: 403 [1001730] (transfer_client.cpp:589)
[SOURCE_CAPTURE ]E: failed to download file </dms-folder/sub-folder/dms_schema/dms_table/data.csv> from bucket <dms-test> as </rdsdbdata/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/dms-folder/sub-folder/dms_schema/dms_table/data.csv>,
                status = 4 (FAILED) [1001730] (transfer_client.cpp:592)

Ricevi un errore "No response body" nel log di replica

L'errore No response body si verifica quando il ruolo AWS Identity and Access Management (AWS IAM) per l'endpoint di origine S3 non dispone delle autorizzazioni corrette. Per risolvere il problema, verifica che il file di dati esista nel percorso S3 indicato nel messaggio di errore. Quindi verifica che l'utente IAM disponga delle autorizzazioni per s3:GetObject.

Nota: se hai attivato il controllo delle versioni nel bucket di origine, devi anche concedere l'autorizzazione s3:GetObjectVersion.

Informazioni correlate

Utilizzo di Amazon S3 come origine per AWS DMS

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 mesi fa