Quali oggetti posso migrare utilizzando un'attività AWS DMS?

Ultimo aggiornamento: 25/07/2022

Ho un'attività AWS Database Migration Service (AWS DMS) che non esegue la migrazione di tutti gli oggetti dello schema del database. Quali oggetti sono migrati da un'attività AWS DMS e come posso migrare gli oggetti rimanenti?

Breve descrizione

Se l'attività AWS DMS non sta migrando un oggetto, è possibile che le attività AWS DMS non eseguano la migrazione di questo tipo di oggetto. AWS DMS crea una serie di oggetti come tabelle e chiavi primarie, ma non crea gli oggetti che non sono necessari per eseguire la migrazione dei dati dall'origine. Alcuni degli oggetti che AWS DMS non crea sono: gli indici secondari, le impostazioni predefinite dei dati e i vincoli di chiave non primaria

Per ulteriori informazioni sugli oggetti creati da AWS DMS, consulta Troubleshooting migration tasks in AWS Database Migration Service (Risoluzione dei problemi relativi alle attività di migrazione in AWS Database Migration Service).

Per eseguire la migrazione degli oggetti che non vengono migrati da AWS DMS, utilizza uno dei seguenti metodi:

  • Per una migrazione omogenea (tra due database dello stesso tipo di motore), esegui la migrazione dello schema utilizzando gli strumenti nativi del motore per esportare e importare lo schema stesso, senza alcun dato.
  • Per una migrazione eterogenea (tra due database che utilizzano diversi tipi di motore), utilizza lo Strumento di conversione dello schema AWS per generare uno schema di destinazione completo.

Risoluzione

Verificare se un oggetto viene migrato da un'attività AWS DMS

Innanzitutto, utilizza queste linee guida per verificare se un oggetto viene migrato da un'attività AWS DMS:

  • Un'attività AWS DMS crea la tabella nella destinazione, insieme al vincolo e all'indice della chiave primaria.
  • Se non esiste alcuna chiave primaria, l'attività crea la chiave univoca (se presente nella tabella di origine).
  • Se nella tabella di origine sono presenti i vincoli NOT NULL, l'attività AWS DMS crea gli stessi vincoli nella destinazione. Non sono incluse le colonne degli oggetti di grandi dimensioni (LOB). Se AWS DMS crea le tabelle di destinazione, imposta le colonne LOB su nullable, per impostazione predefinita. Per ulteriori informazioni, consulta Migrating large binary objects (LOBs) (Migrazione di oggetti binari di grandi dimensioni (LOB)).
  • Se la tabella di origine ha una colonna a incremento automatico, questa proprietà non viene migrata.
  • Altre proprietà specifiche della tabella come i vincoli di chiave esterna, i controlli, le impostazioni predefinite dei dati e i commenti non vengono replicate dall'attività AWS DMS.
  • Gli oggetti di database, ad esempio gli indici secondari, le viste, le procedure, le funzioni, i pacchetti e i trigger non vengono migrati dall'attività AWS DMS. Esegui la migrazione di questi oggetti separatamente.

Esecuzione della migrazione degli oggetti tramite gli strumenti nativi del motore (migrazione omogenea)

Per una migrazione omogenea del database, utilizza gli strumenti nativi per eseguire un'esportazione dei metadati dello schema, senza i dati. Questo dump dei soli metadati viene quindi importato nel database di destinazione per la creazione degli oggetti, senza alcun dato. Quindi, esegui l'attività AWS DMS con la configurazione dell'attività TargetTablePrepMode impostata su TRUNCATE_BEFORE_LOAD. Ciò significa che l'attività non viene eliminata, ma ricrea le tabelle nella destinazione.

Oracle

Per eseguire la migrazione di oggetti con i database Oracle, utilizza lo strumento di esportazione in data pump (expdp) per effettuare un dump di soli metadati. Utilizzando il parametro CONTENT=METADATA_ONLY, lo strumento di data pump scarica solo le definizioni degli oggetti del database. Lo strumento non scarica i dati delle righe della tabella.

1.    Per eseguire un dump di soli metadati, crea un file di parametri per esportare lo schema:

$> cat export_sample_user.par 
userid=DMS_USER/password@SOURCE_DB
directory=DATA_PUMP_DIR
logfile=export_dms_sample_user_metadata.log
dumpfile=export_dms_sample_user_metadata_%U.dmp
schemas=DMS_SAMPLE
CONTENT=METADATA_ONLY

2.    Esegui l'esportazione utilizzando lo strumento expdp:

expdp parfile=export_sample_user.par

3.    Dopo aver creato i file di dump nel DATA_PUMP_DIR del database di origine, copiali nel DATA_PUMP_DIR del database Oracle di destinazione. Per creare gli oggetti nel database Oracle di destinazione, esegui lo strumento di importazione in data pump (impdp) per importare i metadati:

impdp admin@TARGET_DB directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_user_metadata_%U.dmp

SQL Server

Per eseguire la migrazione di oggetti utilizzando SQL Server, genera uno script SQL per lo schema del database:

  1. Accedi al database di origine tramite SQL Server Management Studio (SSMS).
  2. Fai clic con il pulsante destro del mouse sul database per cui desideri generare gli script, seleziona Tasks (Attività), quindi Generate Scripts (Genera script).
  3. In Select specific database objects (Seleziona oggetti di database specifici) seleziona le tabelle, le viste e qualsiasi altro oggetto che desideri utilizzare, quindi fai clic su Next (Avanti).
  4. Seleziona il pulsante Advanced (Avanzate), quindi seleziona i tipi di dati di cui desideri creare uno script.
  5. Se desideri ottenere SQL per gli indici secondari, imposta Script indexes (Indici degli script) su true (vero). Gli Script indexes (Indici degli script) sono impostati su false (falso), per impostazione predefinita.
  6. Scegli come salvare gli script. Ad esempio, crea un file SQL su disco, copia il codice SQL in una nuova finestra di query o copia gli script negli appunti.
  7. Seleziona Next (Avanti).
  8. Seleziona di nuovo Next (Avanti), quindi Finish (Fine).

Per creare gli oggetti nel database di destinazione, esegui lo script SQL generato dopo il completamento di questi passaggi.

MySQL

Per migrare gli oggetti con MySQL, utilizza lo strumento mysqldump per generare un file di dump contenente solo i metadati dello schema. L'opzione --no-data comunica a mysqldump di non eseguire il dump dei dati della tabella, quindi i risultati nel file di dump contengono solo le istruzioni per creare le tabelle. Per un dump di sola definizione, aggiungi le opzioni --routines e --events per includere anche le definizioni archiviate di routine ed eventi.

Esempio:

mysqldump --no-data --routines --events -h SOURCE_DB_SERVER_NAME -u DMS_USER -p SOURCE_DB > path_to_dump_file.sql

Per creare gli oggetti nel database di destinazione, esegui lo script SQL generato dopo l'esecuzione del comando precedente.

PostgreSQL

Per migrare gli oggetti con i database PostgreSQL, utilizza lo strumento pg_dump per generare un file di dump contenente solo i metadati dello schema. L'opzione-s o --schema-only esegue il dump delle definizioni degli oggetti (schema) e non dei dati.

Esempio:

pg_dump --host SOURCE_DB_SERVER_NAME --port 5432 --username DMS_USER --schema-only --verbose SOURCE_DB > path_to_dump_file.sql

Per creare gli oggetti nel database di destinazione, esegui lo script SQL generato dopo l'esecuzione del comando precedente.

Esecuzione della migrazione degli oggetti utilizzando lo Strumento di conversione dello schema AWS

Utilizza AWS SCT per convertire e migrare gli schemi di database esistenti da un motore di database a un altro. Oppure, utilizza AWS SCT per copiare uno schema di database on-premise esistente in un'istanza di database di Amazon Relational Database Service (Amazon RDS) che esegue lo stesso motore.

Per convertire lo schema del database, completa i seguenti passaggi:

  1. Create migration rules in AWS SCT (Creazione di regole di migrazione in AWS SCT).
  2. Convert your schema by using AWS SCT (Conversione dello schema utilizzando AWS SCT).
  3. Save and apply your converted schema in AWS SCT (Salvataggio e applicazione dello schema convertito in AWS SCT).

Per ulteriori informazioni, consulta Converting database schemas using AWS SCT (Conversione degli schemi di database utilizzando AWS SCT).


High-level view of AWS DMS (Presentazione generale di AWS DMS)

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?