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à.
Utilizzo di un database Amazon Redshift come destinazione per AWS Database Migration Service
Puoi migrare i dati verso i database Amazon Redshift utilizzando. AWS Database Migration Service Amazon Redshift è un servizio di data warehouse nel cloud in scala petabyte interamente gestito. Con un database Amazon Redshift come destinazione, puoi eseguire la migrazione dei dati da tutti gli altri database di origine supportati.
Puoi utilizzare Amazon Redshift Serverless come destinazione per. AWS DMS Per ulteriori informazioni, consulta la sezione seguente: Utilizzo AWS DMS con Amazon Redshift Serverless come destinazione.
Il cluster Amazon Redshift deve trovarsi nello stesso AWS account e nella stessa AWS regione dell'istanza di replica.
Durante una migrazione di database verso Amazon Redshift, sposta AWS DMS innanzitutto i dati in un bucket Amazon S3. Quando i file risiedono in un bucket Amazon S3 AWS DMS , li trasferisce nelle tabelle appropriate nel data warehouse Amazon Redshift. AWS DMS crea il bucket S3 nella stessa AWS regione del database Amazon Redshift. L'istanza AWS DMS di replica deve trovarsi nella stessa regione. AWS
Se utilizzi l'API AWS CLI o DMS per migrare i dati su Amazon Redshift, configura AWS Identity and Access Management un ruolo (IAM) per consentire l'accesso a S3. Per ulteriori informazioni sulla creazione di questo ruolo IAM, consulta Creazione dei ruoli IAM da utilizzare con AWS DMS.
L'endpoint Amazon Redshift fornisce l'automazione completa per le operazioni seguenti:
-
Generazione dello schema e mappatura dei tipi di dati
-
Caricamento completo delle tabelle di database di origine
-
Caricamento incrementale delle modifiche apportate alle tabelle di origine
-
Applicazione delle modifiche dello schema nel DDL (Data Definition Language) effettuate sulle tabelle di origine
-
Sincronizzazione tra il caricamento completo e i processi Change Data Capture (CDC).
AWS Database Migration Service supporta sia le operazioni a pieno carico che quelle di elaborazione delle modifiche. AWS DMS legge i dati dal database di origine e crea una serie di file con valori separati da virgole (.csv). Per le operazioni a caricamento completo, crea file per ogni tabella. AWS DMS AWS DMS quindi copia i file di tabella per ogni tabella in una cartella separata in Amazon S3. Quando i file vengono caricati su Amazon S3, AWS DMS invia un comando di copia e i dati contenuti nei file vengono copiati in Amazon Redshift. Per le operazioni di elaborazione delle modifiche, AWS DMS copia le modifiche nette nei file.csv. AWS DMS quindi carica i file di modifica della rete su Amazon S3 e copia i dati su Amazon Redshift.
Per ulteriori dettagli sull'utilizzo di Amazon Redshift come target per AWS DMS, consulta le seguenti sezioni:
Argomenti
Privilegi richiesti per l'utilizzo di Redshift come destinazione
Limitazioni all'uso di Amazon Redshift come obiettivo per AWS Database Migration Service
Configurazione di un database Amazon Redshift come destinazione per AWS Database Migration Service
Creazione e utilizzo di AWS KMS chiavi per crittografare i dati di destinazione di Amazon Redshift
Impostazioni degli endpoint quando si utilizza Amazon Redshift come destinazione per AWS DMS
Utilizzo di una chiave di crittografia dei dati e di un bucket Amazon S3 come storage intermedio
Utilizzo AWS DMS con Amazon Redshift Serverless come destinazione
Prerequisiti per l'utilizzo di un database Amazon Redshift come destinazione per AWS Database Migration Service
Di seguito sono descritti i prerequisiti necessari per l'utilizzo di Amazon Redshift come destinazione per la migrazione dei dati:
-
Usa la console AWS di gestione per avviare un cluster Amazon Redshift. Prendi nota delle informazioni di base sul tuo AWS account e sul tuo cluster Amazon Redshift, come password, nome utente e nome del database. Tali valori sono necessari durante la creazione dell'endpoint di destinazione Amazon Redshift.
-
Il cluster Amazon Redshift deve trovarsi nello stesso AWS account e nella stessa AWS regione dell'istanza di replica.
-
L'istanza di AWS DMS replica richiede la connettività di rete all'endpoint Amazon Redshift (nome host e porta) utilizzato dal cluster.
-
AWS DMS utilizza un bucket Amazon S3 per trasferire dati al database Amazon Redshift. Per consentire a AWS DMS di creare il bucket, la console utilizza un ruolo IAM,
dms-access-for-endpoint
. Se utilizzi l'API AWS CLI o DMS per creare una migrazione di database con Amazon Redshift come database di destinazione, devi creare questo ruolo IAM. Per ulteriori informazioni sulla creazione di questo ruolo, consulta Creazione dei ruoli IAM da utilizzare con AWS DMS. -
AWS DMS converte BLOBs e NCLOBs in un VARCHAR sull'istanza Amazon Redshift di destinazione. CLOBs Amazon Redshift non supporta tipi di dati VARCHAR di dimensioni superiori a 64 KB, quindi non puoi archiviare dati tradizionali su Amazon LOBs Redshift.
-
Imposta l'impostazione dell'attività dei metadati di destinazione BatchApplyEnabledsu
true
for per gestire AWS DMS le modifiche alle tabelle di destinazione di Amazon Redshift durante il CDC. È necessaria una chiave primaria nella tabella di origine e nella tabella di destinazione. Senza una chiave primaria, le modifiche vengono applicate istruzione dopo istruzione. E ciò può influire negativamente sulle prestazioni delle attività durante il CDC causando latenza di destinazione e influendo sulla coda di commit del cluster.
Privilegi richiesti per l'utilizzo di Redshift come destinazione
Utilizza il comando GRANT per definire i privilegi di accesso per un utente o un gruppo di utenti. I privilegi includono opzioni di accesso come la possibilità di leggere i dati in tabelle e viste, scrivere dati e creare tabelle. Per ulteriori informazioni sull'utilizzo di GRANT con Amazon Redshift, consulta GRANT nella Guida per gli sviluppatori di database Amazon Redshift.
Di seguito è riportata la sintassi per assegnare privilegi specifici per una tabella, un database, uno schema, una funzione, una procedura o privilegi a livello di lingua su tabelle e viste Amazon Redshift.
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]
Di seguito è riportata la sintassi per i privilegi a livello di colonna su tabelle e viste Amazon Redshift.
GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | GROUP group_name | PUBLIC } [, ...]
Di seguito è riportata la sintassi per il privilegio ASSUMEROLE concesso a utenti e gruppi con un ruolo specificato.
GRANT ASSUMEROLE ON { 'iam_role' [, ...] | ALL } TO { username | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD } [, ...]
Limitazioni all'uso di Amazon Redshift come obiettivo per AWS Database Migration Service
Le seguenti limitazioni si applicano quando si utilizza un database Amazon Redshift come destinazione:
-
Non abilitare il controllo delle versioni per il bucket S3 che usi come storage intermedio per la destinazione Amazon Redshift. Se hai bisogno del controllo delle versioni S3, utilizza le policy del ciclo di vita per eliminare attivamente le vecchie versioni. In caso contrario, è possibile che si verifichino errori della connessione di test dell'endpoint a causa del timeout della chiamata
list-object
S3. Per creare una policy del ciclo di vita per un bucket S3, consulta Gestione del ciclo di vita dello storage. Per eliminare la versione di un oggetto S3, consulta Eliminazione di versioni di oggetti da un bucket con funzione Controllo delle versioni abilitata. -
Il seguente DDL non è supportato:
ALTER TABLE
table name
MODIFY COLUMNcolumn name
data type
; -
AWS DMS non può migrare o replicare le modifiche a uno schema con un nome che inizia con un carattere di sottolineatura (_). Se disponi di schemi con un nome che inizia con un carattere di sottolineatura, utilizza le trasformazioni di mappatura per rinominare lo schema sulla destinazione.
-
Amazon Redshift non supporta VARCHARs dimensioni superiori a 64 KB. LOBs i database tradizionali non possono essere archiviati in Amazon Redshift.
-
L'applicazione di un'istruzione DELETE a una tabella con una chiave primaria a più colonne non è supportata quando uno dei nomi di colonna della chiave primaria utilizza una parola riservata. Vai qui per vedere un elenco di parole riservate Amazon Redshift.
-
Potrebbero verificarsi problemi di prestazioni se il sistema di origine esegue operazioni UPDATE sulla chiave primaria di una tabella di origine. Questi problemi di prestazioni si verificano quando si applicano modifiche alla destinazione. Ciò accade perché le operazioni UPDATE (e DELETE) dipendono dal valore della chiave primaria per identificare la riga di destinazione. Se aggiorni la chiave primaria di una tabella di origine, il log delle attività conterrà messaggi come i seguenti:
Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
-
DMS non supporta nomi DNS personalizzati per la configurazione di un endpoint di un cluster Redshift ed è necessario utilizzare il nome DNS fornito da Amazon. Poiché il cluster Amazon Redshift deve trovarsi nello stesso account e nella stessa regione AWS dell'istanza di replica, la convalida non riesce se si utilizza un endpoint DNS personalizzato.
-
Amazon Redshift prevede un timeout di sessione inattiva predefinito di 4 ore. Quando non c'è alcuna esecuzione all'interno dell'attività di replica DMS, Redshift disconnette la sessione dopo 4 ore. Gli errori possono derivare dall'impossibilità di DMS di connettersi e dalla potenziale necessità di riavviare il sistema. Come soluzione alternativa, imposta per SESSION TIMEOUT un limite superiore a 4 ore per l'utente della replica DMS. In alternativa, consulta la descrizione di ALTER USER nella Guida per gli sviluppatori di database di Amazon Redshift.
-
Quando AWS DMS replica i dati della tabella di origine senza una chiave primaria o univoca, la latenza CDC potrebbe essere elevata, con conseguente livello di prestazioni inaccettabile.
Configurazione di un database Amazon Redshift come destinazione per AWS Database Migration Service
AWS Database Migration Service deve essere configurato per funzionare con l'istanza Amazon Redshift. Nella tabella seguente vengono descritte le proprietà di configurazione disponibili per l'endpoint Amazon Redshift.
Proprietà |
Descrizione |
---|---|
server |
Il nome del cluster Amazon Redshift in uso. |
port |
Il numero di porta per Amazon Redshift. Il valore predefinito è 5439. |
username |
Il nome utente Amazon Redshift di un utente registrato. |
password |
La password per l'utente denominato nella proprietà username. |
database |
Il nome del data warehouse (servizio) Amazon Redshift in uso. |
Se desideri aggiungere ulteriori attributi della stringa di connessione all'endpoint Amazon Redshift, puoi specificare maxFileSize
e fileTransferUploadStreams
. Per ulteriori informazioni su questi attributi, consulta Impostazioni degli endpoint quando si utilizza Amazon Redshift come destinazione per AWS DMS.
Utilizzo del routing VPC avanzato con Amazon Redshift come destinazione per AWS Database Migration Service
Se usi il routing VPC avanzato con la destinazione Amazon Redshift, tutto il traffico di tipo COPY tra il cluster Amazon Redshift e i repository di dati passa attraverso il VPC. Poiché il routing VPC avanzato influisce sul modo in cui Amazon Redshift accede ad altre risorse, i comandi COPY potrebbero avere esito negativo se non hai configurato correttamente il VPC.
AWS DMS può essere influenzato da questo comportamento perché utilizza il comando COPY per spostare i dati in S3 in un cluster Amazon Redshift.
Di seguito sono riportati i passaggi AWS DMS necessari per caricare i dati in un target Amazon Redshift:
-
AWS DMS copia i dati dall'origine in file.csv sul server di replica.
-
AWS DMS utilizza l' AWS SDK per copiare i file.csv in un bucket S3 sul tuo account.
-
AWS DMS utilizza quindi il comando COPY in Amazon Redshift per copiare i dati dai file.csv in S3 in una tabella appropriata in Amazon Redshift.
Se il routing VPC avanzato non è abilitato, Amazon Redshift indirizza il traffico attraverso Internet, incluso il traffico verso altri servizi all'interno della rete. AWS Se la caratteristica non è abilitata, non è necessario configurare il percorso di rete. Se la caratteristica è abilitata, è necessario creare un percorso di rete tra il VPC del cluster e le risorse di dati. Per ulteriori informazioni sulla configurazione necessaria, consulta Routing VPC avanzato nella documentazione di Amazon Redshift.
Creazione e utilizzo di AWS KMS chiavi per crittografare i dati di destinazione di Amazon Redshift
È possibile crittografare i dati di destinazione trasmessi ad Amazon S3 prima di copiarli in Amazon Redshift. A tale scopo, puoi creare e utilizzare chiavi personalizzate. AWS KMS Puoi utilizzare la chiave creata per crittografare i dati di destinazione usando uno dei seguenti meccanismi al momento della creazione dell'endpoint di destinazione Amazon Redshift:
-
Utilizza la seguente opzione quando esegui il comando
create-endpoint
utilizzando la AWS CLI.--redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "
your-kms-key-ARN
"}'Qui,
è l'ARN (Amazon Resource Name) per la chiave KMS. Per ulteriori informazioni, consulta Utilizzo di una chiave di crittografia dei dati e di un bucket Amazon S3 come storage intermedio.your-kms-key-ARN
-
Imposta l'attributo di connessione aggiuntivo
encryptionMode
sul valoreSSE_KMS
e l'attributo della connessione aggiuntivaserverSideEncryptionKmsKeyId
per l'ARN per la chiave KMS. Per ulteriori informazioni, consulta Impostazioni degli endpoint quando si utilizza Amazon Redshift come destinazione per AWS DMS.
Per crittografare i dati di destinazione di Amazon Redshift utilizzando una chiave KMS, è necessario AWS Identity and Access Management un ruolo (IAM) con le autorizzazioni per accedere ai dati di Amazon Redshift. È possibile accedere a questo ruolo IAM in una policy (policy della chiave) collegata alla chiave di crittografia creata. È possibile farlo nella console IAM creando quanto segue:
-
Un ruolo IAM con una policy gestita. AWS
-
Una chiave di crittografia KMS con la policy della chiave che fa riferimento a questo ruolo.
Nelle seguenti procedure viene descritto come procedere.
Per creare un ruolo IAM con la policy AWS gestita richiesta
Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/
. -
Nel riquadro di navigazione, seleziona Ruoli. Viene visualizzata la pagina Roles (Ruoli).
-
Scegliere Crea ruolo. Viene visualizzata la pagina Create role (Crea ruolo).
-
Dopo aver selezionato Servizio AWS come entità attendibile, scegli DMS come servizio per l'utilizzo del ruolo.
-
Scegli Successivo: autorizzazioni. Verrà visualizzata la pagina Attach permissions policies (Collega policy di autorizzazioni).
-
Trova e seleziona la policy
AmazonDMSRedshiftS3Role
. -
Scegli Successivo: Tag. Viene visualizzata la pagina Aggiungi tag. Qui è possibile aggiungere i tag desiderati.
-
Seleziona Next: Review (Successivo: Rivedi) ed esamina i risultati.
-
Se le impostazioni sono quelle desiderate, immetti un nome per il ruolo (ad esempio,
DMS-Redshift-endpoint-access-role
) e qualsiasi ulteriore descrizione, quindi scegli Create role (Crea ruolo). Viene visualizzata la pagina Roles (Ruoli) con un messaggio che indica che il ruolo è stato creato.
Ora il nuovo ruolo per accedere alle risorse di Amazon Redshift per la crittografia con un nome specifico, ad esempio DMS-Redshift-endpoint-access-role
, è stato creato.
Per creare una chiave di AWS KMS crittografia con una policy chiave che faccia riferimento al tuo ruolo IAM
Nota
Per ulteriori informazioni su come AWS DMS funzionano le chiavi di AWS KMS crittografia, consultaImpostazione di una chiave di crittografia e specificazione delle autorizzazioni AWS KMS.
-
Accedi a AWS Management Console e apri la console AWS Key Management Service (AWS KMS) in https://console.aws.amazon.com/kms.
-
Per modificare il Regione AWS, usa il selettore della regione nell'angolo in alto a destra della pagina.
-
Nel riquadro di navigazione, scegli Chiavi gestite dal cliente.
-
Scegliere Create key (Crea chiave). Verrà visualizzata la pagina Configure key (Configura chiave).
-
Alla voce Key type (Tipo di chiave), scegliere Symmetric (Simmetrica).
Nota
Quando crei questa chiave, puoi creare solo una chiave simmetrica, perché tutti i AWS servizi, come Amazon Redshift, funzionano solo con chiavi di crittografia simmetriche.
-
Scegliere Advanced Options (Opzioni avanzate). Alla voce Key material origin (Origine del materiale della chiave), assicurarsi che sia selezionata la voce KMS quindi scegliere Next (Avanti). Verrà visualizzata la pagina Add labels (Aggiungi etichette).
-
Alla voce Create alias and description (Crea alias e descrizione), inserire un alias per la chiave (ad esempio
DMS-Redshift-endpoint-encryption-key
) e qualsiasi descrizione aggiuntiva. -
Alla voce Tag, aggiungere tutti i tag desiderati per identificare la chiave e monitorarne l'utilizzo, quindi scegliere Next (Avanti). Verrà visualizzata la pagina Define key administrative permissions (Definisci autorizzazioni amministrative della chiave) che mostra un elenco di utenti e ruoli tra cui è possibile scegliere.
-
Aggiungi gli utenti e i ruoli che desideri gestiscano la chiave. Assicurati che questi utenti e ruoli dispongano delle autorizzazioni necessarie per gestire la chiave.
-
Alla voce Key deletion (Eliminazione chiave), scegliere se gli amministratori della chiave possono eliminarla, quindi scegliere Next (Avanti). Verrà visualizzata la pagina Define key usage permissions (Definisci autorizzazioni di utilizzo della chiave) che mostra un elenco aggiuntivo di utenti e ruoli tra cui è possibile scegliere.
-
Per Questo account scegli tra gli utenti disponibili quelli che dovranno eseguire operazioni di crittografia sulle destinazioni Amazon Redshift. Scegli in Ruoli il ruolo creato in precedenza per abilitare l'accesso alla crittografia degli oggetti di destinazione Amazon Redshift, ad esempio
DMS-Redshift-endpoint-access-role
. -
Se desideri aggiungere altri account non elencati per avere lo stesso accesso, per Altri AWS account, scegli Aggiungi un AWS altro account, quindi scegli Avanti. Verrà visualizzata la pagina Review and edit key policy (Rivedi e modifica la policy della chiave) che mostra il JSON associato alla policy della chiave, che è possibile rivedere e modificare digitando all'interno del testo esistente. Qui è possibile visualizzare il punto in cui la policy della chiave fa riferimento al ruolo e agli utenti (ad esempio,
Admin
eUser1
) selezionati nella fase precedente. È anche possibile visualizzare le diverse operazioni di chiave consentite per i diversi principali (utenti e ruoli), come mostrato nel seguente esempio.{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
-
Scegli Fine. La pagina delle chiavi di crittografia si apre con un messaggio che indica che il tuo è AWS KMS key stato creato.
È stata creata una nuova chiave KMS con un alias specificato (ad esempio, DMS-Redshift-endpoint-encryption-key
). Questa chiave consente di AWS DMS crittografare i dati di destinazione di Amazon Redshift.
Impostazioni degli endpoint quando si utilizza Amazon Redshift come destinazione per AWS DMS
È possibile utilizzare le impostazioni degli endpoint per configurare il database di destinazione Amazon Redshift in modo simile a come si usano gli attributi aggiuntivi di connessione. Le impostazioni vengono specificate quando si crea l'endpoint di destinazione utilizzando la AWS DMS console o utilizzando il create-endpoint
comando in AWS CLI, con la --redshift-settings '{"
sintassi JSON.EndpointSetting"
:
"value"
, ...
}'
La tabella riportata di seguito mostra le impostazioni degli endpoint che è possibile utilizzare con Amazon Redshift come destinazione.
Nome | Descrizione |
---|---|
|
Specifica la dimensione massima (in KB) di qualsiasi file .csv utilizzato per il trasferimento dei dati ad Amazon Redshift. Valore predefinito: 32.768 KB (32 MB) Valori validi: 1-1.048.576 Esempio: |
|
Specifica il numero di thread utilizzati per caricare un singolo file. Valore predefinito: 10 Valori validi: 1-64 Esempio: |
|
Specifica se viene accettato qualsiasi formato di data, inclusi i formati di date non validi, ad esempio 0000-00-00. Valore booleano. Valore predefinito: false Valori validi: true | false Esempio: |
|
Specifica il formato della data. Si tratta di un input di stringa e tale campo è vuoto per impostazione predefinita. Il formato predefinito è YYYY-MM-DD ma è possibile modificarlo, ad esempio, in. DD-MM-YYYY Se i valori di ora o data utilizzano formati diversi, utilizzare l'argomento Valore predefinito: vuoto Valori validi: " Esempio: |
|
Specifica il formato dell'ora. Si tratta di un input di stringa e tale campo è vuoto per impostazione predefinita. L'argomento Valore predefinito: 10 Valori validi: " Esempio: |
|
Speciifica se migrare i campi CHAR e VARCHAR vuoti come AWS DMS null. Il valore true imposta i campi CHAR e VARCHAR vuoti come null. Valore predefinito: false Valori validi: true | false Esempio: |
TruncateColumns |
Tronca i dati nelle colonne al numero appropriato di caratteri in modo che corrispondano alle specifiche della colonna. Si applica solo alle colonne con un tipo di dati VARCHAR o CHAR e alle righe di dimensioni fino a 4 MB. Valore predefinito: false Valori validi: true | false Esempio: |
RemoveQuotes |
Rimuove le virgolette intorno alle stringhe nei dati in entrata. Tutti i caratteri compresi tra le virgolette, inclusi i delimitatori, vengono mantenuti. Per ulteriori informazioni sulla rimozione delle virgolette per una destinazione Amazon Redshift, consulta la Guida per gli sviluppatori di database di Amazon Redshift. Valore predefinito: false Valori validi: true | false Esempio: |
TrimBlanks |
Rimuove i caratteri di spazio finale da una stringa VARCHAR. Questo parametro è valido solo per le colonne con un tipo di dati VARCHAR. Valore predefinito: false Valori validi: true | false Esempio: |
EncryptionMode |
La modalità di crittografia lato server che si desidera utilizzare per inviare i dati a S3 prima di copiarli in Amazon Redshift. I valori validi sono SSE_S3 (crittografia lato server S3) o SSE_KMS (crittografia chiave KMS). Se scegli SSE_KMS , imposta il parametro ServerSideEncryptionKmsKeyId al valore dell'ARN (Amazon Resource Name) della chiave KMS da utilizzare per la crittografia. NotaÈ inoltre possibile utilizzare il comando CLI Valore predefinito: Valori validi: Esempio: |
ServerSideEncryptionKmsKeyId |
Se hai configurato EncryptionMode su SSE_KMS , imposta questo parametro sull'ARN della chiave KMS. Puoi trovare questo ARN selezionando l'alias della chiave nell'elenco delle AWS KMS chiavi create per il tuo account. Quando crei la chiave, è necessario associare ad essa policy e ruoli specifici. Per ulteriori informazioni, consulta Creazione e utilizzo di AWS KMS chiavi per crittografare i dati di destinazione di Amazon Redshift. Esempio: |
EnableParallelBatchInMemoryCSVFiles |
L'impostazione EnableParallelBatchInMemoryCSVFiles migliora le prestazioni delle attività di pieno carico multithread di maggiori dimensioni grazie alla possibilità di DMS di scrivere sul disco anziché sulla memoria. Il valore predefinito è false . |
CompressCsvFiles |
Utilizza questo attributo per comprimere i dati inviati a una destinazione Amazon Redshift durante la migrazione. Il valore predefinito è true e la compressione è abilitata per impostazione predefinita. |
Utilizzo di una chiave di crittografia dei dati e di un bucket Amazon S3 come storage intermedio
Puoi utilizzare le impostazioni degli endpoint di destinazione Amazon Redshift per configurare:
-
Una chiave di crittografia AWS KMS dei dati personalizzata. Puoi utilizzare quindi questa chiave per crittografare i dati trasmessi ad Amazon S3 prima che siano copiati su Amazon Redshift.
-
Un bucket S3 personalizzato come storage intermedio per i dati migrati in Amazon Redshift.
-
Mappa un booleano come tale da un'origine PostgreSQL. Per impostazione predefinita, il tipo BOOLEAN viene migrato come varchar(1). Puoi specificare
MapBooleanAsBoolean
per consentire alla destinazione Redshift di migrare il tipo booleano come tale, come mostrato nell'esempio seguente.--redshift-settings '{"MapBooleanAsBoolean": true}'
Tieni presente che questa impostazione, affinché abbia effetto, deve essere configurata sia sull'endpoint di origine che su quello di destinazione.
Impostazioni delle chiavi KMS per la crittografia dei dati
I seguenti esempi mostrano la configurazione di una chiave KMS personalizzata per crittografare i dati trasmessi a S3. Per iniziare, è possibile effettuare la seguente chiamata create-endpoint
utilizzando la AWS CLI.
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username
your-username
--passwordyour-password
--server-nameyour-server-name
--port 5439 --database-nameyour-db-name
--redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'
Qui l'oggetto JSON specificato dall'opzione --redshift-settings
definisce due parametri. Uno è un parametro EncryptionMode
con il valore SSE_KMS
. L'altro è un parametro ServerSideEncryptionKmsKeyId
con il valore arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1
. Questo valore è un ARN (Amazon Resource Name) per la chiave KMS personalizzata.
Per impostazione predefinita, la crittografia dei dati di S3 viene effettuata utilizzando la crittografia lato server. Per la destinazione Amazon Redshift dell'esempio precedente, ciò equivale a specificare le impostazioni degli endpoint, come nell'esempio seguente.
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username
your-username
--passwordyour-password
--server-nameyour-server-name
--port 5439 --database-nameyour-db-name
--redshift-settings '{"EncryptionMode": "SSE_S3"}'
Per ulteriori informazioni sull'utilizzo della crittografia lato server S3, consulta Protezione dei dati con la crittografia lato server nella Guida per l'utente di Amazon Simple Storage Service.
Nota
È inoltre possibile utilizzare il comando CLI modify-endpoint
per modificare il valore del parametro EncryptionMode
per un endpoint esistente da SSE_KMS
a SSE_S3
. Tuttavia non puoi modificare il valore di EncryptionMode
da SSE_S3
a SSE_KMS
.
Impostazioni del bucket Amazon S3
Quando esegui la migrazione dei dati verso un endpoint di destinazione Amazon Redshift AWS DMS , utilizza un bucket Amazon S3 predefinito come storage di attività intermedio prima di copiare i dati migrati su Amazon Redshift. Gli esempi mostrati per la creazione di un endpoint di destinazione Amazon Redshift con una chiave di crittografia dei dati AWS KMS utilizzano questo bucket S3 predefinito (consulta Impostazioni delle chiavi KMS per la crittografia dei dati).
Puoi invece specificare un bucket S3 personalizzato per questo storage intermedio includendo i seguenti parametri nel valore della tua opzione sul comando: --redshift-settings
AWS CLI
create-endpoint
-
BucketName
: una stringa che specifichi come nome dello storage del bucket S3. Se il ruolo di accesso al servizio si basa sulla policyAmazonDMSRedshiftS3Role
, questo valore deve avere il prefissodms-
, ad esempiodms-my-bucket-name
. -
BucketFolder
(facoltativo): una stringa che è possibile indicare come nome della cartella di storage nel bucket S3 specificato. -
ServiceAccessRoleArn
: l'ARN di un ruolo IAM che consente l'accesso amministrativo al bucket S3. Di solito, è necessario creare questo ruolo in base alla policyAmazonDMSRedshiftS3Role
. Per un esempio, consulta la procedura per creare un ruolo IAM con la policy gestita da AWS richiesta in Creazione e utilizzo di AWS KMS chiavi per crittografare i dati di destinazione di Amazon Redshift.Nota
Se specifichi l'ARN di un altro ruolo IAM utilizzando l'opzione
--service-access-role-arn
del comandocreate-endpoint
, questa opzione per il ruolo IAM ha la precedenza.
L'esempio seguente mostra come utilizzare questi parametri per specificare un bucket Amazon S3 personalizzato nella seguente chiamata create-endpoint
utilizzando la AWS CLI.
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username
your-username
--passwordyour-password
--server-nameyour-server-name
--port 5439 --database-nameyour-db-name
--redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN
", "BucketName": "your-bucket-name
", "BucketFolder": "your-bucket-folder-name
"}'
Impostazioni delle attività multithread per Amazon Redshift
Puoi migliorare le prestazioni delle attività di pieno carico e acquisizione dei dati di modifica (CDC) per un endpoint di destinazione Amazon Redshift utilizzando le impostazioni delle attività multithread. Ti consentono di specificare il numero di thread simultanei e il numero di record da archiviare in un buffer.
Impostazioni delle attività di pieno carico multithread per Amazon Redshift
Per promuovere le prestazioni del pieno carico, puoi utilizzare le seguenti impostazioni dell'attività ParallelLoad*
:
-
ParallelLoadThreads
: specifica il numero di thread simultanei che DMS utilizza durante un pieno carico per eseguire il push di record di dati a un endpoint di destinazione Amazon Redshift. Il valore predefinito è zero (0) e il valore massimo è 32. Per ulteriori informazioni, consulta Impostazioni delle attività di caricamento completo.Puoi impostare l'attributo
enableParallelBatchInMemoryCSVFiles
sufalse
quando usi l'impostazione dell'attivitàParallelLoadThreads
. L'attributo migliora le prestazioni delle attività di pieno carico multithread di maggiori dimensioni grazie alla possibilità di DMS di scrivere sul disco anziché sulla memoria. Il valore predefinito ètrue
. -
ParallelLoadBufferSize
: specifica il numero massimo di richieste di record di dati durante l'utilizzo di thread di caricamento paralleli con la destinazione Redshift. Il valore predefinito è 100 e il valore massimo è 1.000. Ti consigliamo di utilizzare questa opzione quando è ParallelLoadThreads > 1 (maggiore di uno).
Nota
Il supporto per l'uso delle impostazioni delle ParallelLoad*
attività durante il FULL LOAD sugli endpoint target di Amazon Redshift è disponibile nelle AWS DMS versioni 3.4.5 e successive.
L'impostazione dell'endpoint ReplaceInvalidChars
Redshift non è supportata per l'uso durante l'acquisizione dei dati di modifica (CDC) o durante un'attività di migrazione FULL LOAD abilitata al caricamento parallelo. È supportata per la migrazione FULL LOAD quando il caricamento parallelo non è abilitato. Per ulteriori informazioni, consulta l'API RedshiftSettingsReference AWS Database Migration Service
Impostazioni dell'attività di CDC multithread per Amazon Redshift
Per promuovere le prestazioni della CDC, puoi utilizzare le seguenti impostazioni dell'attività ParallelApply*
.
-
ParallelApplyThreads
: specifica il numero di thread simultanei che vengono AWS DMS utilizzati durante un caricamento CDC per inviare i record di dati a un endpoint di destinazione Amazon Redshift. Il valore predefinito è zero (0) e il valore massimo è 32. Il valore minimo consigliato è pari al numero di sezioni del cluster. -
ParallelApplyBufferSize
: specifica il numero massimo di richieste di record di dati durante l'utilizzo di thread di applicazione paralleli con la destinazione Redshift. Il valore predefinito è 100 e il valore massimo è 1.000. Consigliamo di utilizzare questa opzione quando è ParallelApplyThreads > 1 (maggiore di uno).Per ottenere il massimo vantaggio da Redshift come destinazione, è opportuno che il valore di
ParallelApplyBufferSize
sia almeno due volte (il doppio) il numero diParallelApplyThreads
.
Nota
Il supporto per l'uso delle impostazioni delle ParallelApply*
attività durante il CDC verso gli endpoint di destinazione Amazon Redshift è disponibile AWS DMS nelle versioni 3.4.3 e successive.
Il livello di parallelismo applicato dipende dalla correlazione tra la dimensione del batch totale e la dimensione massima del file utilizzato per trasferire i dati. Quando si utilizzano impostazioni dell'attività di CDC multithread con una destinazione Redshift, si ottengono vantaggi quando la dimensione del batch è elevata rispetto alla dimensione massima del file. Ad esempio, per ottimizzare le prestazioni è possibile utilizzare la seguente combinazione di impostazioni dell'endpoint e dell'attività.
// Redshift endpoint setting MaxFileSize=250000; // Task settings BatchApplyEnabled=true; BatchSplitSize =8000; BatchApplyTimeoutMax =1800; BatchApplyTimeoutMin =1800; ParallelApplyThreads=32; ParallelApplyBufferSize=100;
Utilizzando le impostazioni dell'esempio precedente, un cliente con un carico di lavoro transazionale intenso trae vantaggio dal fatto che il buffer batch, contenente 8000 record, viene riempito in 1800 secondi e utilizza 32 thread paralleli con una dimensione massima del file di 250 MB.
Per ulteriori informazioni, consulta Impostazioni di ottimizzazione dell'elaborazione delle modifiche.
Nota
Le query DMS eseguite durante la replica continua su un cluster Redshift possono condividere la stessa coda di gestione del carico di lavoro con altre query applicative in esecuzione. Pertanto, prendi in considerazione la corretta configurazione delle proprietà di gestione del carico di lavoro per influenzare le prestazioni durante la replica continua su una destinazione Redshift. Ad esempio, se sono in esecuzione altre query ETL parallele, DMS viene eseguito più lentamente e i miglioramenti delle prestazioni sono vanificati.
Tipi di dati di destinazione per Amazon Redshift.
L'endpoint Amazon Redshift per AWS DMS supporta la maggior parte dei tipi di dati Amazon Redshift. La tabella seguente mostra i tipi di dati target di Amazon Redshift supportati durante l'utilizzo AWS DMS e la mappatura predefinita dei tipi di AWS DMS dati.
Per ulteriori informazioni sui tipi di AWS DMS dati, consulta. Tipi di dati per AWS Database Migration Service
AWS DMS tipi di dati |
Tipi di dati Amazon Redshift |
---|---|
BOOLEAN |
BOOL |
BYTES |
VARCHAR (lunghezza) |
DATE |
DATE |
TIME |
VARCHAR(20) |
DATETIME |
Se la scala è => 0 e =< 6, a seconda del tipo di colonna di destinazione Redshift, il valore è uno dei seguenti: TIMESTAMP (s) TIMESTAMPTZ (s): se il timestamp di origine contiene un offset di zona (come in SQL Server oppure Oracle), viene convertito in UTC al momento dell'inserimento/aggiornamento. Se non contiene un offset, l'ora viene già considerata in UTC. Se il dimensionamento è => 7 e =< 9: VARCHAR (37) |
INT1 |
INT2 |
INT2 |
INT2 |
INT4 |
INT4 |
INT8 |
INT8 |
NUMERIC |
Se il dimensionamento è => 0 e =< 37: NUMERIC (p,s) Se il dimensionamento è => 38 e =< 127: VARCHAR (lunghezza) |
REAL4 |
FLOAT4 |
REAL8 |
FLOAT8 |
STRING |
Se la lunghezza è compresa tra 1 e 65.535, utilizza VARCHAR (lunghezza in byte) Se la lunghezza è compresa tra 65.536 e 2.147.483.647, utilizza VARCHAR (65535) |
UINT1 |
INT2 |
UINT2 |
INT2 |
UINT4 |
INT4 |
UINT8 |
NUMERIC (20,0) |
WSTRING |
Se la lunghezza è compresa tra 1 e 65.535, utilizza NVARCHAR (lunghezza in byte) Se la lunghezza è compresa tra 65.536 e 2.147.483.647, utilizza NVARCHAR (65535) |
BLOB |
VARCHAR (dimensioni massime di LOB *2) Le dimensioni massime di LOB non possono superare 31 KB. Amazon Redshift non supporta VARCHARs dimensioni superiori a 64 KB. |
NCLOB |
NVARCHAR (dimensioni massime di LOB) Le dimensioni massime di LOB non possono superare 63 KB. Amazon Redshift non supporta VARCHARs dimensioni superiori a 64 KB. |
CLOB |
VARCHAR (dimensioni massime di LOB) Le dimensioni massime di LOB non possono superare 63 KB. Amazon Redshift non supporta VARCHARs dimensioni superiori a 64 KB. |
Utilizzo AWS DMS con Amazon Redshift Serverless come destinazione
AWS DMS supporta l'utilizzo di Amazon Redshift Serverless come endpoint di destinazione. Per informazioni sull'uso di Amazon Redshift serverless, consulta Amazon Redshift serverless nella Guida alla gestione di Amazon Redshift.
Questo argomento descrive come utilizzare un endpoint Serverless Amazon Redshift con. AWS DMS
Nota
Quando crei un endpoint Serverless Amazon Redshift, per il DatabaseNamecampo della configurazione degli RedshiftSettingsendpoint, usa il nome del data warehouse Amazon Redshift o il nome dell'endpoint del gruppo di lavoro. Per il ServerNamecampo, usa il valore di Endpoint visualizzato nella pagina Workgroup per il cluster serverless (ad esempio,). default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com
Per informazioni su come creare un endpoint, vedi Creazione di endpoint di origine e destinazione. Per informazioni sull'endpoint del gruppo di lavoro, consulta Connessione ad Amazon Redshift serverless.
Policy di attendibilità con Amazon Redshift serverless come destinazione
Quando utilizzi Amazon Redshift serverless come endpoint di destinazione, devi aggiungere la seguente sezione evidenziata alla policy di attendibilità. Questa policy di attendibilità è associata al ruolo dms-access-for-endpoint
.
{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "arn:aws:service:region:account:resourcetype/id", "Effect": "Allow" }
, { "Sid": "", "Effect": "Allow", "Principal": { "Service": "redshift-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" }
] }, "IsDefaultVersion": true } }
Per ulteriori informazioni sull'utilizzo di una politica di fiducia con AWS DMS, consulta. Creazione dei ruoli IAM da utilizzare con AWS DMS
Limitazioni all'utilizzo di Amazon Redshift serverless come destinazione
L'utilizzo di Redshift serverless come destinazione prevede le seguenti limitazioni:
AWS DMS supporta Amazon Redshift Serverless come endpoint solo nelle regioni che supportano Amazon Redshift Serverless. Per informazioni sulle regioni che supportano Amazon Redshift serverless, consulta API Redshift serverless nell'argomento Endpoint e quote di Amazon Redshift della Guida di riferimento generale di AWS.
Quando utilizzi il routing VPC avanzato, assicurati di creare un endpoint Amazon S3 nello stesso VPC del cluster Redshift serverless o del cluster con provisioning Redshift. Per ulteriori informazioni, consulta Utilizzo del routing VPC avanzato con Amazon Redshift come destinazione per AWS Database Migration Service.