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 SQL database Postgre come fonte AWS DMS
È possibile migrare i dati da uno o più database SQL Postgre utilizzando. AWS DMS Con un SQL database Postgre come fonte, puoi migrare i dati verso un altro database Postgre o uno degli altri SQL database supportati.
Per informazioni sulle versioni di Postgre SQL supportate come sorgente, consulta. AWS DMS Fonti per AWS DMS
AWS DMS supporta Postgre SQL per questi tipi di database:
-
Database locali
-
Database su un'EC2istanza Amazon
-
Database su un'istanza Amazon RDS DB
-
Database su un'istanza DB basata su Amazon Aurora SQL Postgre -Compatible Edition
-
Database su un'istanza DB basata su Amazon Aurora SQL Postgre -Compatible Serverless Edition
Nota
DMSsupporta Amazon Aurora Postgre SQL —Serverless V1 come origine solo per il pieno carico. Ma puoi usare Amazon Aurora Postgre SQL —Serverless V2 come origine per Full load, Full load + e solo attività. CDC CDC
Versione sorgente di Postgre SQL |
AWS DMS versione da usare |
---|---|
9.x, 10.x, 11.x, 12.x |
Usa qualsiasi AWS DMS versione disponibile. |
13.x |
Usa AWS DMS la versione 3.4.3 e successive. |
14.x |
Usa AWS DMS la versione 3.4.7 e successive. |
15.x |
Usa la AWS DMS versione 3.5.1 e successive. |
16.x |
Usa AWS DMS la versione 3.5.3 e successive. |
Puoi usare Secure Socket Layers (SSL) per crittografare le connessioni tra l'SQLendpoint Postgre e l'istanza di replica. Per ulteriori informazioni sull'utilizzo SSL con un endpoint Postgre, consulta. SQL Utilizzo di SSL con AWS Database Migration Service
Come requisito di sicurezza aggiuntivo quando si utilizza Postgre SQL come sorgente, l'account utente specificato deve essere un utente registrato nel database Postgre. SQL
Per configurare un SQL database Postgre come endpoint di AWS DMS origine, procedi come segue:
-
Crea un SQL utente Postgre con le autorizzazioni appropriate per fornire l' AWS DMS accesso al tuo database di origine Postgre. SQL
Nota
-
Se il tuo database di SQL origine Postgre è gestito automaticamente, consulta per ulteriori informazioni. Utilizzo di database Postgres autogestiti come sorgente in SQL AWS DMS
-
Se il tuo database di SQL origine Postgre è gestito da AmazonRDS, consulta Utilizzo AWS di SQL database Postgres gestiti come sorgente DMS per ulteriori informazioni.
-
-
Crea un endpoint SQL sorgente Postgre conforme alla configurazione del database Postgre che hai scelto. SQL
-
Crea un'attività o una serie di attività per migrare le tabelle.
Per creare un' full-load-onlyattività, non è necessaria alcuna ulteriore configurazione dell'endpoint.
Prima di creare un'attività per l'acquisizione dei dati di modifica (un'CDCoperazione CDC solo o a caricamento completo), consulta o. Abilitazione dell'CDCutilizzo di un database Postgre autogestito come fonte SQL AWS DMS Abilitazione CDC con un'istanza DB Postgre AWS gestita con SQL AWS DMS
Argomenti
- Utilizzo di database Postgres autogestiti come sorgente in SQL AWS DMS
- Utilizzo AWS di SQL database Postgres gestiti come sorgente DMS
- Abilitazione dell'acquisizione dei dati di modifica (CDC) mediante la replica logica
- Utilizzo di punti di CDC partenza nativi per configurare il caricamento di una fonte Postgre CDC SQL
- Migrazione da Postgre a Postgre utilizzando SQL SQL AWS DMS
- Migrazione da Babelfish per Amazon Aurora Postgre utilizzando SQL AWS DMS
- Rimozione di AWS DMS artefatti da un database sorgente Postgre SQL
- Impostazioni di configurazione aggiuntive quando si utilizza un database SQL Postgre come sorgente DMS
- Utilizzo dell'impostazione dell' MapBooleanAsBoolean endpoint Postgree SQL
- Impostazioni degli endpoint e attributi di connessione aggiuntivi (ECAs) quando usi SQL Postgre come fonte DMS
- Limitazioni all'utilizzo di un database Postgre come sorgente SQL DMS
- Tipi di dati di origine per Postgre SQL
Utilizzo di database Postgres autogestiti come sorgente in SQL AWS DMS
Con un SQL database Postgre autogestito come origine, puoi migrare i dati verso un altro database Postgre o uno degli altri SQL database di destinazione supportati da. AWS DMS L'origine del database può essere un database locale o un motore autogestito in esecuzione su un'istanza AmazonEC2. Puoi utilizzare un'istanza DB sia per le attività a pieno carico che per le attività di acquisizione dei dati di modifica ()CDC.
Prerequisiti per l'utilizzo di un database SQL Postgree autogestito come fonte AWS DMS
Prima di migrare i dati da un database di origine SQL Postgre autogestito, procedi come segue:
-
Assicurati di utilizzare un SQL database Postgre con versione 9.4.x o successiva.
-
Per le CDC attività a caricamento completo o CDC solo quelle a caricamento completo, concedi le autorizzazioni di superutente per l'account utente specificato per il database di origine di Postgre. SQL Le autorizzazioni di superuser sono necessarie all'account utente per accedere alle funzioni specifiche della replica nell'origine. Per le attività che prevedono solo il caricamento completo, l'account utente necessita SELECT delle autorizzazioni sulle tabelle per migrarle.
-
Aggiungi l'indirizzo IP del server di AWS DMS replica al file di
pg_hba.conf
configurazione e abilita la replica e le connessioni socket. Di seguito è riportato un esempio.# Replication Instance host all all 12.3.4.56/00 md5 # Allow replication connections from localhost, by a user with the # replication privilege. host replication dms 12.3.4.56/00 md5
Il file di
pg_hba.conf
configurazione di Postgre SQL controlla l'autenticazione del client. (HBAsta per autenticazione basata su host). Il file è solitamente memorizzato nella directory dei dati del cluster di database. -
Se stai configurando un database come origine per la replica logica, utilizza see AWS DMS Abilitazione dell'CDCutilizzo di un database Postgre autogestito come fonte SQL AWS DMS
Nota
Alcune AWS DMS transazioni rimangono inattive per qualche tempo prima che il DMS motore le utilizzi nuovamente. Utilizzando il parametro idle_in_transaction_session_timeout
nelle SQL versioni 9.6 e successive di Postgre, puoi causare il timeout e il fallimento delle transazioni inattive. Non terminare le transazioni inattive quando utilizzi AWS DMS.
Abilitazione dell'CDCutilizzo di un database Postgre autogestito come fonte SQL AWS DMS
AWS DMS supporta l'acquisizione dei dati di modifica (CDC) mediante la replica logica. Per abilitare la replica logica di un database SQL sorgente Postgre autogestito, imposta i seguenti parametri e valori nel file di configurazione: postgresql.conf
-
Imposta
wal_level = logical
. -
Imposta
max_replication_slots
su un valore maggiore di 1.Imposta il valore
max_replication_slots
in base al numero di attività che desideri eseguire. Ad esempio, per eseguire cinque attività dovrai impostare un minimo di cinque slot. Gli slot si aprono automaticamente non appena viene avviata un'attività e restano aperti anche quando l'attività non è più in esecuzione. Assicurati di eliminare manualmente gli slot aperti. Nota che elimina DMS automaticamente gli slot di replica quando l'attività viene eliminata, se lo slot è stato creato. DMS -
Imposta
max_wal_senders
su un valore maggiore di 1.Il parametro
max_wal_senders
imposta il numero di attività simultanee che è possibile eseguire. -
Il parametro
wal_sender_timeout
termina le connessioni di replica che sono inattive per un tempo maggiore del numero specificato di millisecondi. L'impostazione predefinita per un SQL database Postgre locale è di 60.000 millisecondi (60 secondi). L'impostazione del valore su 0 (zero) disabilita il meccanismo di timeout ed è un'impostazione valida per. DMSQuando si imposta un valore diverso
wal_sender_timeout
da zero, un'DMSoperazione CDC richiede un minimo di 10000 millisecondi (10 secondi) e fallisce se il valore è inferiore a 10000. Mantieni il valore inferiore a 5 minuti per evitare ritardi durante un failover Multi-AZ di un'istanza di replica. DMS
Alcuni parametri sono statici e possono essere impostati solo all'avvio del server. Qualsiasi modifica alle relative voci nel file di configurazione (per un database autogestito) o nel gruppo di parametri DB (RDSper un SQL database Postgre) viene ignorata fino al riavvio del server. Per ulteriori informazioni, consulta la documentazione di Postgre. SQL
Per ulteriori informazioni sull'attivazioneCDC, consulta. Abilitazione dell'acquisizione dei dati di modifica (CDC) mediante la replica logica
Utilizzo AWS di SQL database Postgres gestiti come sorgente DMS
Puoi usare un'istanza SQL DB Postgre AWS gestita come sorgente per. AWS DMSÈ possibile eseguire sia attività a pieno carico che attività di modifica dell'acquisizione dei dati (CDC) utilizzando una fonte Postgre gestita AWS da. SQL
Prerequisiti per l'utilizzo di un database Postgre gestito come AWS sorgente SQL DMS
Prima di migrare i dati da un database di origine SQL Postgre AWS gestito, procedi come segue:
-
Ti consigliamo di utilizzare un account AWS utente con le autorizzazioni minime richieste per l'istanza SQL DB di Postgre come account utente per l'endpoint sorgente di Postgre per. SQL AWS DMS L'utilizzo di un account master è sconsigliato. L'account deve avere il ruolo
rds_superuser
e il ruolords_replication
. Il ruolords_replication
fornisce le autorizzazioni per gestire gli slot logici e per eseguire lo streaming dei dati utilizzando gli slot logici.Assicurati di creare diversi oggetti dall'account utente master per l'account che utilizzi. Per informazioni sulla creazione di questi oggetti, consulta Migrazione di un SQL database Amazon RDS for Postgre senza utilizzare l'account utente principale.
-
Se il database di origine si trova in un cloud privato virtuale (VPC), scegli il gruppo di VPC sicurezza che fornisce l'accesso all'istanza DB in cui risiede il database. È necessario affinché l'istanza di DMS replica si connetta correttamente all'istanza DB di origine. Quando il database e l'istanza di DMS replica coincidonoVPC, aggiungi il gruppo di sicurezza appropriato alle relative regole in entrata.
Nota
Alcune AWS DMS transazioni rimangono inattive per qualche tempo prima che il DMS motore le utilizzi nuovamente. Utilizzando il parametro idle_in_transaction_session_timeout
nelle SQL versioni 9.6 e successive di Postgre, puoi causare il timeout e il fallimento delle transazioni inattive. Non terminare le transazioni inattive quando utilizzi AWS DMS.
Abilitazione CDC con un'istanza DB Postgre AWS gestita con SQL AWS DMS
AWS DMS supporta i SQL database CDC Amazon RDS Postgre quando l'istanza DB è configurata per utilizzare la replica logica. La tabella seguente riassume la compatibilità della replica logica di ciascuna versione di Postgre gestita. AWS SQL
Non è possibile utilizzare le repliche di SQL lettura di RDS Postgre per (replica continua). CDC
Versione Postgre SQL |
AWS DMS supporto a pieno carico |
AWS DMS CDCsupporto |
---|---|---|
Aurora Postgre SQL versione 2.1 con compatibilità Postgre 10.5 (o inferiore) SQL |
Sì |
No |
Aurora Postgre SQL versione 2.2 con compatibilità Postgre 10.6 (o superiore) SQL |
Sì |
Sì |
RDSper Postgre con compatibilità con Postgre 10.21 SQL (o superiore) SQL |
Sì |
Sì |
Per abilitare la replica logica per un'istanza DB Postgre RDS SQL
-
Usa l'account utente AWS principale per l'istanza SQL DB di Postgre come account utente per l'endpoint di origine Postgre. SQL L'account utente principale ha i ruoli richiesti che ne consentono la configurazione. CDC
Se utilizzi un account diverso dall'account utente master, è necessario creare diversi oggetti dall'account utente master per l'account che utilizzi. Per ulteriori informazioni, consulta Migrazione di un SQL database Amazon RDS for Postgre senza utilizzare l'account utente principale.
-
Imposta il
rds.logical_replication
parametro nel gruppo di CLUSTER parametri del database su 1. Questo parametro statico richiede un riavvio dell'istanza database per avere effetto. Come parte dell'applicazione di questo parametro AWS DMS imposta i parametriwal_level
,max_wal_senders
,max_replication_slots
emax_connections
. Queste modifiche ai parametri possono aumentare la generazione di write ahead log (WAL), quindi impostatele solords.logical_replication
quando utilizzate slot di replica logici. -
Il parametro
wal_sender_timeout
termina le connessioni di replica che sono inattive per un tempo maggiore del numero specificato di millisecondi. L'impostazione predefinita per un SQL database Postgre AWS gestito è 30000 millisecondi (30 secondi). L'impostazione del valore su 0 (zero) disabilita il meccanismo di timeout ed è un'impostazione valida per. DMSQuando si imposta un valore diverso
wal_sender_timeout
da zero, un'DMSoperazione CDC richiede un minimo di 10000 millisecondi (10 secondi) e ha esito negativo se il valore è compreso tra 0 e 10000. Mantieni il valore inferiore a 5 minuti per evitare ritardi durante un failover Multi-AZ di un'istanza di replica. DMS -
Assicurati che il valore del parametro
max_worker_processes
nel gruppo di parametri del cluster di database sia uguale o superiore ai valori totali combinati dimax_logical_replication_workers
,autovacuum_max_workers
emax_parallel_workers
. Un numero elevato di processi di lavoro in background potrebbe influire sui carichi di lavoro delle applicazioni su istanze di piccole dimensioni. Quindi, monitora le prestazioni del database se imposti un valore dimax_worker_processes
superiore a quello predefinito. -
Quando si utilizza Aurora Postgre SQL come sorgente conCDC, imposta su.
synchronous_commit
ON
Migrazione di un SQL database Amazon RDS for Postgre senza utilizzare l'account utente principale
In alcuni casi, potresti non utilizzare l'account utente principale per l'istanza SQL DB di Amazon RDS Postgre che stai utilizzando come origine. In questi casi, crei diversi oggetti per acquisire gli eventi del linguaggio di definizione dei dati (DDL). Puoi creare questi oggetti nell'account diverso dall'account master e quindi creare un trigger nell'account utente master.
Nota
Se configuri l'impostazione dell'endpoint CaptureDdls
su false
nell'endpoint di origine, non è necessario creare la tabella e il trigger seguenti nel database di origine.
Per creare questi oggetti, utilizza la procedura seguente.
Per creare oggetti
-
Scegli lo schema in cui devono essere creati gli oggetti. Lo schema predefinito è
public
. Verifica che lo schema esista e che l'account
vi possa accedere.OtherThanMaster
-
Accedi all'istanza di Postgre SQL DB utilizzando l'account utente diverso dall'account master, qui l'
account.OtherThanMaster
-
Crea la tabella
awsdms_ddl_audit
eseguendo il comando seguente, sostituendo
nel codice e il nome dello schema da utilizzare.objects_schema
CREATE TABLE
objects_schema
.awsdms_ddl_audit ( c_key bigserial primary key, c_time timestamp, -- Informational c_user varchar(64), -- Informational: current_user c_txn varchar(16), -- Informational: current transaction c_tag varchar(24), -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE' c_oid integer, -- For future use - TG_OBJECTID c_name varchar(64), -- For future use - TG_OBJECTNAME c_schema varchar(64), -- For future use - TG_SCHEMANAME. For now - holds current_schema c_ddlqry text -- The DDL query associated with the current DDL event ); -
Crea la funzione
awsdms_intercept_ddl
eseguendo il comando seguente, sostituendo
nel codice e il nome dello schema da utilizzare.objects_schema
CREATE OR REPLACE FUNCTION
objects_schema
.awsdms_intercept_ddl() RETURNS event_trigger LANGUAGE plpgsql SECURITY DEFINER AS $$ declare _qry text; BEGIN if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then SELECT current_query() into _qry; insert intoobjects_schema
.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete fromobjects_schema
.awsdms_ddl_audit; end if; END; $$; -
Esci dall'account
e collegati con un account che disponga del ruoloOtherThanMaster
rds_superuser
. -
Crea il trigger evento
awsdms_intercept_ddl
utilizzando il seguente comando.CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE
objects_schema
.awsdms_intercept_ddl(); -
Assicurati che tutti gli utenti e i ruoli che accedono a questi eventi dispongano delle autorizzazioni necessarieDDL. Per esempio:
grant all on public.awsdms_ddl_audit to public; grant all on public.awsdms_ddl_audit_c_key_seq to public;
Una volta completata la procedura precedente, puoi creare l'endpoint di origine AWS DMS
utilizzando l'account
.OtherThanMaster
Nota
Questi eventi sono attivati dalle istruzioni CREATE TABLE
, ALTER
TABLE
e DROP TABLE
.
Abilitazione dell'acquisizione dei dati di modifica (CDC) mediante la replica logica
Puoi utilizzare la funzionalità di replica logica nativa SQL di Postgre per abilitare l'acquisizione dei dati di modifica (CDC) durante la migrazione del database per i sorgenti Postgre. SQL Puoi utilizzare questa funzionalità con un'istanza database Postgre autogestita SQL e anche con un'istanza database Amazon RDS for SQL SQL Postgre. Questo approccio riduce i tempi di inattività e aiuta a garantire che il database di destinazione sia sincronizzato con il database Postgre di origine. SQL
AWS DMS supporti CDC per tabelle Postgre SQL con chiavi primarie. Se una tabella non ha una chiave primaria, write-ahead logs (WAL) non include un'immagine precedente della riga del database. In questo caso, non DMS è possibile aggiornare la tabella. Puoi utilizzare impostazioni di configurazione aggiuntive e l'identità di replica della tabella come soluzione alternativa. Tuttavia, questo approccio può generare log aggiuntivi. Ti consigliamo di utilizzare l'identità di replica delle tabelle come soluzione alternativa solo dopo attenti test. Per ulteriori informazioni, consulta Impostazioni di configurazione aggiuntive quando si utilizza un database SQL Postgre come sorgente DMS.
Nota
REPLICAIDENTITYFULLè supportato con un plug-in di decodifica logica, ma non è supportato con un plug-in pglogico. Per ulteriori informazioni, consulta la documentazione di pglogical
CDCSolo per attività a pieno carico, AWS DMS utilizza gli slot di replica logica per conservare i log per la replica fino alla WAL decodifica dei log. CDC Al riavvio (non alla ripresa) per un caricamento completo e un'CDCattività o un'CDCattività, lo slot di replica viene ricreato.
Nota
Per la decodifica logica, DMS utilizza test_decoding o il plugin pglogical. Se il plug-in pglogical è disponibile su un SQL database Postgre di origine, DMS crea uno slot di replica utilizzando pglogical, altrimenti viene utilizzato un plug-in test_decoding. Per ulteriori informazioni sul plugin test_decoding, consulta la documentazione di Postgre. SQL
Se il parametro del database max_slot_wal_keep_size
è impostato su un valore non predefinito e lo slot restart_lsn
di replica è inferiore a quello corrente LSN di oltre tale dimensione, l'DMSoperazione ha esito negativo a causa della rimozione dei file richiesti. WAL
Configurazione del plug-in pglogical
Implementato come SQL estensione Postgre, il plugin pglogical è un sistema di replica logica e un modello per la replica selettiva dei dati. La tabella seguente identifica le versioni del database Postgre di origine che supportano il plugin pglogical. SQL
SQLFonte Postgre |
Supporta pglogical |
---|---|
Postgre 9.4 o versione successiva SQL autogestita |
Sì |
Amazon RDS Postgree SQL 9.5 o versioni precedenti |
No |
Amazon RDS Postgree SQL 9.6 o versioni successive |
Sì |
Aurora SQL Postgre da 1.x a 2.5.x |
No |
Aurora SQL Postgre 2.6.x o versioni successive |
Sì |
Aurora SQL Postgre 3.3.x o versioni successive |
Sì |
Prima di configurare pglogical per l'uso con AWS DMS, abilita la replica logica per change data capture () sul tuo database di origine Postgre. CDC SQL
-
Per informazioni sull'abilitazione della replica logica per i database di origine Postgre autogestiti, vedi CDC SQL Abilitazione dell'CDCutilizzo di un database Postgre autogestito come fonte SQL AWS DMS
-
Per informazioni sull'abilitazione della replica logica per i database di origine Postgre AWS gestiti CDC internamente, consulta. SQL Abilitazione CDC con un'istanza DB Postgre AWS gestita con SQL AWS DMS
Dopo aver abilitato la replica logica sul database di SQL origine Postgre, segui i passaggi seguenti per configurare pglogical da utilizzare con. DMS
Per utilizzare il plugin pglogical per la replica logica su un database sorgente Postgre con SQL AWS DMS
-
Crea un'estensione pglogical sul tuo database Postgre di origine: SQL
-
Imposta il parametro corretto:
-
Per i database SQL Postgre autogestiti, imposta il parametro del database.
shared_preload_libraries= 'pglogical'
-
Per i database Postgre SQL su Amazon RDS e Amazon Aurora SQL Postgre -Compatible Edition, imposta il
shared_preload_libraries
parametropglogical
su nello stesso gruppo di parametri. RDS
-
-
Riavvia il database di origine di Postgre. SQL
-
Sul SQL database Postgre, esegui il comando,
create extension pglogical;
-
-
Per verificare che pglogical sia stato installato, esegui il comando seguente:
select * FROM pg_catalog.pg_extension
È ora possibile creare un' AWS DMS attività che esegua l'acquisizione dei dati di modifica per l'endpoint del database di origine Postgre. SQL
Nota
Se non abiliti pglogical nel tuo database di SQL origine Postgre, utilizza il plugin per impostazione predefinita. AWS DMS test_decoding
Quando pglogical è abilitato per la decodifica logica, utilizza pglogical per impostazione predefinita. AWS DMS Tuttavia, puoi impostare l'attributo aggiuntivo di connessione PluginName
per utilizzare il plug-in test_decoding
.
Utilizzo di punti di CDC partenza nativi per configurare il caricamento di una fonte Postgre CDC SQL
Per abilitare i punti di CDC partenza nativi con Postgre SQL come sorgente, imposta l'attributo slotName
extra connection sul nome di uno slot di replica logica esistente quando crei l'endpoint. Questo slot di replica logica contiene le modifiche in corso dal momento della creazione dell'endpoint, quindi supporta la replica da un punto precedente nel tempo.
Postgre SQL scrive le modifiche al database nei WAL file che vengono eliminati solo dopo aver letto AWS DMS con successo le modifiche dallo slot di replica logica. Utilizzando gli slot di replica logica è possibile proteggere le modifiche registrate dall'eliminazione prima che vengano utilizzate dal motore di replica.
Tuttavia, a seconda della velocità di modifica e utilizzo, le modifiche presenti in uno slot di replica logica possono causare un utilizzo elevato del disco. Si consiglia di impostare allarmi sull'utilizzo dello spazio nell'istanza SQL Postgre di origine quando si utilizzano slot di replica logica. Per ulteriori informazioni sull'impostazione dell'attributo di connessione aggiuntivo slotName
, consulta Impostazioni degli endpoint e attributi di connessione aggiuntivi (ECAs) quando usi SQL Postgre come fonte DMS.
La seguente procedura percorre questo approccio in modo più dettagliato.
Per utilizzare un punto di CDC partenza nativo per configurare il CDC caricamento di un endpoint sorgente di Postgre SQL
-
Identificare lo slot di replica logica utilizzato da un'attività di replica precedente (un'attività padre) che si desidera utilizzare come punto iniziale. Quindi interrogare la visualizzazione
pg_replication_slots
sul database di origine per assicurarsi che questo slot non abbia connessioni attive. In tal caso, risolvile e chiudile prima di procedere.Per i passaggi seguenti, si supponga che lo slot di replica logica sia
abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef
. -
Creare un nuovo endpoint di origine che include la seguente impostazione dell'attributo di connessione aggiuntivo:
slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;
-
Crea una nuova attività CDC solo utilizzando la console, oppure. AWS CLI AWS DMS API Ad esempio, utilizzando il comando CLI è possibile eseguire il
create-replication-task
comando seguente.aws dms create-replication-task --replication-task-identifier postgresql-slot-name-test --source-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ABCD1EFGHIJK2LMNOPQRST3UV4 --target-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ZYX9WVUTSRQONM8LKJIHGF7ED6 --replication-instance-arn arn:aws:dms:us-west-2:012345678901:rep:AAAAAAAAAAA5BB4CCC3DDDD2EE --migration-type cdc --table-mappings "file://mappings.json" --cdc-start-position "4AF/B00000D0" --replication-task-settings "file://task-pg.json"
Nel comando precedente vengono impostate le seguenti opzioni:
-
L'opzione
source-endpoint-arn
è impostata sul nuovo valore creato nella fase 2. -
L'opzione
replication-instance-arn
è impostata sullo stesso valore dell'attività padre della fase 1. -
Le opzioni
table-mappings
ereplication-task-settings
sono impostate sugli stessi valori dell'attività padre della fase 1. -
L'opzione
cdc-start-position
è impostata su un valore di posizione iniziale. Per trovare questa posizione iniziale, interrogare la visualizzazionepg_replication_slots
nel database di origine o visualizzare i dettagli della console per l'attività padre nel passaggio 1. Per ulteriori informazioni, consulta Determinazione di un punto di inizio nativo CDC.
Per abilitare la modalità di CDC avvio personalizzata quando si crea una nuova attività CDC solo utilizzando la AWS DMS console, procedi come segue:
Nella sezione Impostazioni attività, per la modalità di CDC avvio per le transazioni di origine, scegli Abilita la modalità di CDC avvio personalizzata.
Per Punto CDC iniziale personalizzato per le transazioni di origine, scegli Specificare un numero di sequenza di registro. Specifica il numero di modifica del sistema o scegli Specifica un checkpoint di ripristino e fornisci un checkpoint di ripristino.
Quando questa CDC attività viene eseguita, AWS DMS genera un errore se lo slot di replica logica specificato non esiste. Genera un errore anche se l'attività non viene creata con un'impostazione valida per
cdc-start-position
. -
Se utilizzi punti di CDC partenza nativi con il plug-in pglogical e desideri utilizzare un nuovo slot di replica, completa i passaggi di configurazione seguenti prima di creare un'attività. CDC
Per utilizzare un nuovo slot di replica non creato in precedenza come parte di un'altra attività DMS
-
Crea uno slot di replica come illustrato di seguito:
SELECT * FROM pg_create_logical_replication_slot('
replication_slot_name
', 'pglogical'); -
Dopo che il database ha creato lo slot di replica, recupera e annota i valori restart_lsn e confirmed_flush_lsn per lo slot:
select * from pg_replication_slots where slot_name like 'replication_slot_name';
Nota che la posizione di CDC avvio nativo per un'CDCattività creata dopo lo slot di replica non può essere precedente al valore confirmed_flush_lsn.
Per informazioni sui valori restart_lsn e confirmed_flush_lsn, consulta pg_replication_slots
. -
Crea un nodo pglogical.
SELECT pglogical.create_node(node_name := '
node_name
', dsn := 'your_dsn_name
'); -
Crea due set di replica utilizzando la funzione
pglogical.create_replication_set
. Il primo set di replica tiene traccia degli aggiornamenti e delle eliminazioni per le tabelle con chiavi primarie. Il secondo set di replica tiene traccia solo degli inserimenti e ha lo stesso nome del primo set di replica, con l'aggiunta del prefisso "i".SELECT pglogical.create_replication_set('
replication_slot_name
', false, true, true, false); SELECT pglogical.create_replication_set('ireplication_slot_name
', true, false, false, true); -
Aggiungi una tabella al set di repliche.
SELECT pglogical.replication_set_add_table('
replication_slot_name
', 'schemaname.tablename', true); SELECT pglogical.replication_set_add_table('ireplication_slot_name
', 'schemaname.tablename', true); -
Imposta l'attributo di connessione aggiuntivo (ECA) che segue quando crei l'endpoint di origine.
PluginName=PGLOGICAL;slotName=
slot_name
;
Ora puoi creare un'CDCunica attività con un punto di partenza SQL nativo di Postgre utilizzando il nuovo slot di replica. Per ulteriori informazioni sul plug-in pglogical, consulta la documentazione di pglogical 3.7
Migrazione da Postgre a Postgre utilizzando SQL SQL AWS DMS
Quando si esegue la migrazione da un motore di database diverso da Postgre SQL a un database Postgre, AWS DMS è quasi sempre lo strumento di migrazione migliore da SQL utilizzare. Ma quando si esegue la migrazione da un database Postgre a un SQL database Postgre, gli strumenti SQL Postgre possono essere più efficaci. SQL
Utilizzo degli strumenti nativi di Postgre per migrare i dati SQL
Ti consigliamo di utilizzare strumenti di migrazione del SQL database Postgre, ad esempio nelle seguenti pg_dump
condizioni:
-
Hai una migrazione omogenea, in cui stai migrando da un database Postgre di origine a un SQL database Postgre di destinazione. SQL
-
Desideri migrare un intero database.
-
Gli strumenti nativi ti consentono di migrare i dati con tempi di inattività ridotti.
L'utilità pg_dump utilizza il COPY comando per creare uno schema e un dump dei dati di un database Postgre. SQL Lo script del dump generato da pg_dump carica i dati in un database con lo stesso nome e ricrea le tabelle, gli indici e le chiavi esterne. Utilizza il comando pg_restore
e il parametro -d
per ripristinare i dati in un database con un nome diverso.
Se stai migrando i dati da un database di SQL origine Postgre in esecuzione su EC2 un SQL target Amazon RDS for Postgre, puoi utilizzare il plug-in pglogical.
Per ulteriori informazioni sull'importazione di un database Postgre SQL in Amazon RDS for Postgre o SQL Amazon SQL Aurora Postgre -Compatible Edition, consulta. https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
DMSUtilizzo per migrare i dati da Postgre a Postgre SQL SQL
AWS DMS può migrare i dati, ad esempio, da un SQL database Postgre di origine locale a un'istanza Amazon RDS for Postgre SQL o Aurora Postgre di destinazione. SQL I tipi di dati Postgre principali o di base spesso migrano con successo. SQL
Nota
Quando si replicano tabelle partizionate da una SQL fonte Postgre a una SQL destinazione Postgre, non è necessario menzionare la tabella principale come parte dei criteri di selezione dell'attività. DMS La menzione della tabella padre causa la duplicazione dei dati nelle tabelle figlio sulla destinazione, causando probabilmente una violazione delle chiavi primarie. Selezionando solo le tabelle figlio nella tabella che mappa i criteri di selezione, la tabella padre viene compilata automaticamente.
I tipi di dati supportati nel database di origine ma non supportati nella destinazione potrebbero non migrare correttamente. AWS DMS trasmette alcuni tipi di dati come stringhe se il tipo di dati è sconosciuto. Alcuni tipi di dati, come XML eJSON, possono migrare correttamente come file di piccole dimensioni, ma possono avere esito negativo se si tratta di documenti di grandi dimensioni.
Quando esegui la migrazione del tipo di dati, tieni presente quanto segue:
-
In alcuni casi, il tipo di dati Postgre SQL NUMERIC (p, s) non specifica alcuna precisione e scala. Per DMS le versioni 3.4.2 e precedenti, DMS utilizza una precisione di 28 e una scala di 6 per impostazione predefinita, NUMERIC (28,6). Ad esempio, il valore 0.611111104488373 dall'origine viene convertito in 0,611111 sul target Postgre. SQL
-
Una tabella con un tipo di dati deve avere una chiave primaria. ARRAY Una tabella con un tipo di ARRAY dati privo di una chiave primaria viene sospesa durante il caricamento completo.
La tabella seguente mostra i tipi di SQL dati Postgre di origine e se possono essere migrati con successo.
Tipo di dati | Migrazione corretta | Migrazione parziale | Nessuna migrazione | Commenti |
---|---|---|---|---|
INTEGER | X | |||
SMALLINT | X | |||
BIGINT | X | |||
NUMERIC/DECIMAL(p, s) | X | Dove 0<p<39 e 0<s | ||
NUMERIC/DECIMAL | X | Dove p>38 o p=s=0 | ||
REAL | X | |||
DOUBLE | X | |||
SMALLSERIAL | X | |||
SERIAL | X | |||
BIGSERIAL | X | |||
MONEY | X | |||
CHAR | X | Senza precisione specificata | ||
CHAR(n) | X | |||
VARCHAR | X | Senza precisione specificata | ||
VARCHAR(n) | X | |||
TEXT | X | |||
BYTEA | X | |||
TIMESTAMP | X | I valori infiniti positivi e negativi vengono troncati rispettivamente a "9999-12-31 23:59:59" e "4713-01-01 00:00:00 BC". | ||
TIMESTAMP WITH TIME ZONE | X | |||
DATE | X | |||
TIME | X | |||
TIME WITH TIME ZONE | X | |||
INTERVAL | X | |||
BOOLEAN | X | |||
ENUM | X | |||
CIDR | X | |||
INET | X | |||
MACADDR | X | |||
TSVECTOR | X | |||
TSQUERY | X | |||
XML | X | |||
POINT | X | Tipo di dati GIS postspaziali | ||
LINE | X | |||
LSEG | X | |||
BOX | X | |||
PATH | X | |||
POLYGON | X | Tipo di GIS dati postspaziali | ||
CIRCLE | X | |||
JSON | X | |||
ARRAY | X | Richiede la chiave primaria | ||
COMPOSITE | X | |||
RANGE | X | |||
LINESTRING | X | Tipo di GIS dati postspaziali | ||
MULTIPOINT | X | Tipo di GIS dati postspaziali | ||
MULTILINESTRING | X | Tipo di GIS dati postspaziali | ||
MULTIPOLYGON | X | Tipo di GIS dati postspaziali | ||
GEOMETRYCOLLECTION | X | Tipo di GIS dati postspaziali |
Migrazione dei tipi di dati GIS postspaziali
I dati spaziali identificano le informazioni sulla geometria di un oggetto o di una posizione nello spazio. I database SQL relazionali a oggetti Postgre supportano i tipi di dati spaziali Post. GIS
Prima di migrare gli oggetti di dati SQL spaziali di Postgre, assicurati che il plugin Post sia abilitato a livello globale. GIS In questo modo si garantisce la AWS DMS creazione delle colonne di dati spaziali di origine esatte per l'istanza DB di destinazione di Postgre. SQL
Per le migrazioni SQL omogenee SQL da Postgre a Postgre, AWS DMS supporta la migrazione di tipi e sottotipi di oggetti di dati Post GIS geometrici e geografici (coordinate geodetiche) come i seguenti:
-
POINT
-
LINESTRING
-
POLYGON
-
MULTIPOINT
-
MULTILINESTRING
-
MULTIPOLYGON
-
GEOMETRYCOLLECTION
Migrazione da Babelfish per Amazon Aurora Postgre utilizzando SQL AWS DMS
Puoi migrare le tabelle di SQL origine di Babelfish for Aurora Postgre su qualsiasi endpoint di destinazione supportato utilizzando. AWS DMS
Quando crei il tuo endpoint di AWS DMS origine utilizzando la DMS console o CLI i comandi, imposti l'origine su Amazon Aurora SQL Postgre e il nome del database su. API babelfish_db
Nella sezione Endpoint Settings, assicurati che sia impostato su Babelfish e BabelfishDatabaseNameche DatabaseModesia impostato sul nome del database Babelfish T- di origine. SQL Invece di usare la porta Babelfish1433
, usa la TCP porta Aurora Postgre. SQL TCP 5432
È necessario creare le tabelle prima di migrare i dati per assicurarsi che vengano DMS utilizzati i tipi di dati e i metadati delle tabelle corretti. Se non crei le tabelle sulla destinazione prima di eseguire la migrazione, è possibile che le tabelle DMS vengano create con tipi di dati e autorizzazioni errati.
Aggiunta delle regole di trasformazione all'attività di migrazione
Quando crei un'attività di migrazione per una fonte Babelfish, devi includere regole di trasformazione che assicurino l'DMSutilizzo delle tabelle di destinazione precreate.
Se hai impostato la modalità di migrazione multidatabase quando hai definito il SQL cluster Babelfish for Postgre, aggiungi una regola di trasformazione che rinomina il nome dello schema nello schema T. SQL Ad esempio, se il nome dello schema T è e il nome SQL dello schema Babelfish for Postgre èdbo
, rinomina SQL lo schema utilizzando una regola di trasformazione. mydb_dbo
dbo
Per trovare il nome SQL dello schema Postgre, consulta l'architettura Babelfish nella Guida per l'utente di Amazon Aurora.
Se utilizzi la modalità a database singolo, non è necessario utilizzare una regola di trasformazione per rinominare gli schemi di database. I nomi degli SQL schemi Postgre hanno una one-to-one mappatura con i nomi degli schemi nel database T-. SQL
Il seguente esempio di regola di trasformazione mostra come rinominare il nome dello schema da back a: mydb_dbo
dbo
{ "rules": [ { "rule-type": "transformation", "rule-id": "566251737", "rule-name": "566251737", "rule-target": "schema", "object-locator": { "schema-name": "mydb_dbo" }, "rule-action": "rename", "value": "dbo", "old-value": null }, { "rule-type": "selection", "rule-id": "566111704", "rule-name": "566111704", "object-locator": { "schema-name": "mydb_dbo", "table-name": "%" }, "rule-action": "include", "filters": [] } ] }
Limitazioni per l'utilizzo di un endpoint SQL sorgente Postgre con le tabelle Babelfish
Le seguenti limitazioni si applicano quando si utilizza un endpoint sorgente SQL Postgre con tabelle Babelfish:
DMSsupporta solo la migrazione dalla versione 16.2/15.6 di Babelfish e successive e dalla versione 3.5.3 e successive. DMS
DMSnon replica le modifiche alla definizione della tabella Babelfish sull'endpoint di destinazione. Una soluzione alternativa per questa limitazione consiste nell'applicare prima le modifiche alla definizione della tabella sulla destinazione, quindi modificare la definizione della tabella sul sorgente Babelfish.
Quando crei tabelle Babelfish con il tipo di BYTEA dati, le DMS converte nel tipo di
varbinary(max)
dati durante la migrazione a Server come destinazione. SQLDMSnon supporta la LOB modalità completa per i tipi di dati binari. Utilizza invece LOB la modalità limitata per i tipi di dati binari.
DMSnon supporta la convalida dei dati per Babelfish come fonte.
Per l'impostazione delle attività della modalità di preparazione della tabella di Target, utilizza solo le modalità Non fare nulla o Truncate. Non utilizzare la modalità Rilascia tabelle nella destinazione. Quando si utilizza Drop tables on target, è DMS possibile creare tabelle con tipi di dati errati.
Quando si utilizza la replica in corso (CDCo Full load andCDC), imposta l'attributo di connessione
PluginName
extra (ECA) suTEST_DECODING
.-
DMSnon supporta la replica (CDCo Full Load andCDC) della tabella partizionata per Babelfish come sorgente.
Rimozione di AWS DMS artefatti da un database sorgente Postgre SQL
Per catturare DDL gli eventi, AWS DMS crea vari artefatti nel database SQL Postgre all'avvio di un'attività di migrazione. Al termine dell'attività è possibile rimuovere gli artefatti.
Per rimuovere gli artefatti, invia le seguenti istruzioni (nell'ordine), dove {AmazonRDSMigration}
è lo schema in cui sono stati creati gli artefatti. L'eliminazione di uno schema deve essere eseguita con estrema attenzione. Non eliminare mai uno schema operativo, soprattutto uno pubblico.
drop event trigger awsdms_intercept_ddl;
Il trigger evento non appartiene a uno schema specifico.
drop function {AmazonRDSMigration}.awsdms_intercept_ddl() drop table {AmazonRDSMigration}.awsdms_ddl_audit drop schema {AmazonRDSMigration}
Impostazioni di configurazione aggiuntive quando si utilizza un database SQL Postgre come sorgente DMS
È possibile aggiungere impostazioni di configurazione aggiuntive durante la migrazione dei dati da un database Postgre SQL in due modi:
-
È possibile aggiungere valori all'attributo di connessione aggiuntivo per acquisire DDL eventi e specificare lo schema in cui vengono creati gli artefatti del DDL database operativo. Per ulteriori informazioni, consulta Impostazioni degli endpoint e attributi di connessione aggiuntivi (ECAs) quando usi SQL Postgre come fonte DMS.
-
Puoi sostituire i parametri della stringa di connessione. Scegli questa opzione per eseguire una delle seguenti operazioni:
-
Specificare i parametri interni AWS DMS . Questi parametri sono raramente necessari e non sono quindi visualizzati nell'interfaccia utente.
-
Specificate i valori pass-through (passthru) per il client di database specifico. AWS DMS include i parametri pass-through nella stringa di connessione passata al client del database.
-
-
Utilizzando il parametro table-level
REPLICA IDENTITY
nelle SQL versioni 9.4 e successive di Postgre, puoi controllare le informazioni scritte in write-ahead logs (). WALs In particolare, lo fa per identificare le righe WALs che vengono aggiornate o eliminate.REPLICA IDENTITY FULL
registra i vecchi valori di tutte le colonne della riga.REPLICA IDENTITY FULL
Usalo con cautela per ogni tabella poiché neFULL
genera un numero aggiuntivo WALs che potrebbe non essere necessario. Per ulteriori informazioni, vedere ALTERTABLE- REPLICA IDENTITY
Utilizzo dell'impostazione dell' MapBooleanAsBoolean endpoint Postgree SQL
Puoi utilizzare le impostazioni degli SQL endpoint di Postgre per mappare un booleano come booleano dalla tua fonte Postgre a un target Amazon Redshift. SQL Per impostazione predefinita, un tipo viene migrato come varchar (5). BOOLEAN È possibile specificare di consentire MapBooleanAsBoolean
a Postgre di SQL migrare il tipo booleano come booleano, come mostrato nell'esempio seguente.
--postgre-sql-settings '{"MapBooleanAsBoolean": true}'
Tieni presente che questa impostazione, affinché abbia effetto, deve essere configurata sia sull'endpoint di origine che su quello di destinazione.
Poiché My SQL non ha un BOOLEAN tipo, utilizza una regola di trasformazione anziché questa impostazione per la migrazione dei dati su My. BOOLEAN SQL
Impostazioni degli endpoint e attributi di connessione aggiuntivi (ECAs) quando usi SQL Postgre come fonte DMS
Puoi utilizzare le impostazioni degli endpoint e gli attributi di connessione aggiuntivi (ECAs) per configurare il tuo database di origine SQL Postgre. Le impostazioni degli endpoint vengono specificate quando si crea l'endpoint di origine utilizzando la AWS DMS console o utilizzando il create-endpoint
comando contenuto in, con la sintassi. AWS CLI--postgre-sql-settings '{"
JSONEndpointSetting"
:
"value"
, ...
}'
La tabella seguente mostra le impostazioni dell'endpoint e ECAs che è possibile utilizzare con SQL Postgre come sorgente.
Nome attributo | Descrizione |
---|---|
|
Per catturare DDL gli eventi, AWS DMS crea vari artefatti nel database Postgre all'avvio dell'attivitàSQL. Successivamente puoi rimuovere gli artefatti, come descritto in Rimozione di AWS DMS artefatti da un database sorgente Postgre SQL. Se il valore è impostato su false, non è necessario creare tabelle o trigger nel database di origine. Gli eventi trasmessi in streaming vengono DDL acquisiti. Valore predefinito: Valori validi: true/false Esempio: |
|
Utilizzato per controllare la modalità di replica delle transazioni monolitiche con numeri di sequenza logaritmica () LSNs duplicati. Quando questo parametro è impostato Valore predefinito: Valori validi: false/true Esempio: |
|
Imposta lo schema in cui vengono creati gli artefatti del DDL database operativo. Valore predefinito: pubblico Valori validi: stringa Esempio: |
|
Imposta il timeout dell'istruzione client per l'istanza PostgreSQL, in secondi. Il valore predefinito è 60 secondi. Esempio: |
|
Se impostato su Se l'attività è impostata sulla LOB modalità limitata e questa opzione è impostata su true, l'operazione ha esito negativo anziché troncare i dati. LOB Valore predefinito: false Valori validi: booleani Esempio: |
|
Questo attributo di connessione aggiuntivo (ECA) imposta il numero di righe che il cursore recupererà durante l'operazione a pieno carico. A seconda delle risorse disponibili nell'istanza di replica, è possibile aumentare o diminuire il valore. Valore predefinito: Valori validi: numero ECAEsempio: |
|
La funzionalità WAL heartbeat imita una transazione fittizia, in modo che gli slot di replica logica inattivi non rimangano bloccati su vecchi WAL log che comportano situazioni di pieno storage sull'origine. Questo heartbeat mantiene Valore predefinito: Valori validi: true/false Esempio: |
|
Imposta la WAL frequenza del battito cardiaco (in minuti). Valore predefinito: Valori validi: numero Esempio: |
|
Imposta lo schema in cui vengono creati gli artefatti di heartbeat. Valore predefinito: Valori validi: stringa Esempio: |
|
Per impostazione predefinita, esegue il AWS DMS mapping JSONB su. NCLOB È possibile specificare Esempio: |
|
Per impostazione predefinita, esegue il mapping a AWS DMS . VARCHAR WSTRING Puoi specificare di consentire
Esempio: |
|
Questo parametro tratta le colonne con tipi di NUMERIC dati illimitati come se potessero migrare correttamente senza STRING perdere la precisione del valore numerico. Utilizzate questo parametro solo per la replica dall'SQLorigine Postgre alla destinazione Postgre o per i database con compatibilità SQL Postgre. SQL Valore predefinito: Valori validi: Esempio: L'utilizzo di questo parametro può comportare un peggioramento delle prestazioni di replica a causa della trasformazione da valore numerico a stringa e di nuovo a valore numerico. Questo parametro è supportato per l'uso dalla versione 3.4.4 e successive DMS NotaUtilizzalo solo insieme L'uso di SQL endpoint Postgre di origine limita la precisione a 28 Non utilizzare |
|
Specifica il plug-in da utilizzare per creare uno slot di replica. Valori validi: Esempio: |
|
Imposta il nome di uno slot di replica logica creato in precedenza per il CDC caricamento dell'istanza sorgente di Postgre. SQL Se utilizzato con il parametro AWS DMS API Per ulteriori informazioni su come impostare il parametro della richiesta Valori validi: stringa Esempio: |
|
Questo attributo di connessione aggiuntivo (ECA) definisce la dimensione massima di una colonna di dati definita come tipo VarChar senza un identificatore di lunghezza massima. L'impostazione predefinita è 8000 byte. Il valore massimo è 10485760 byte. |
Limitazioni all'utilizzo di un database Postgre come sorgente SQL DMS
Le seguenti limitazioni si applicano quando si utilizza Postgre SQL come fonte per: AWS DMS
-
AWS DMS non funziona con Amazon RDS for Postgre SQL 10.4 o Amazon Aurora Postgre 10.4 come origine o destinazione. SQL
-
Una tabella acquisita deve avere una chiave primaria. Se una tabella non ha una chiave primaria, AWS DMS DELETE ignora e registra le operazioni relative a quella tabella. UPDATE Come soluzione alternativa, consultate Enabling change data capture (CDC) utilizzando la replica logica.
Nota: non è consigliabile eseguire la migrazione senza una chiave primaria/un indice univoco, altrimenti si applicano limitazioni aggiuntive come la funzionalità «NO» di applicazione in batch, la LOB funzionalità completa, la convalida dei dati e l'impossibilità di replicare in modo efficiente sulla destinazione Redshift.
-
AWS DMS ignora il tentativo di aggiornare un segmento di chiave primaria. In questi casi, la destinazione identifica l'aggiornamento come un'operazione che non ha aggiornato righe. Tuttavia, poiché i risultati dell'aggiornamento di una chiave primaria in Postgre SQL sono imprevedibili, nella tabella delle eccezioni non viene scritto alcun record.
-
AWS DMS non supporta l'opzione di esecuzione Avvia processo di modifica delle modifiche da Timestamp.
-
AWS DMS non replica le modifiche risultanti da operazioni di partizione o sottopartizione (, o).
ADD
DROP
TRUNCATE
-
La replica di più tabelle con lo stesso nome, in cui ogni nome presenta una differenza tra maiuscole e minuscole (ad esempio, table1 e Table1) può causare un comportamento TABLE1 imprevedibile. A causa di questo problema, AWS DMS non supporta questo tipo di replica.
-
Nella maggior parte dei casi, AWS DMS supporta l'elaborazione delle CREATE modifiche e ALTER le DROP DDL istruzioni per le tabelle. AWS DMS non supporta questa elaborazione delle modifiche se le tabelle sono contenute in un blocco interno del corpo di una funzione o di una procedura o in altri costrutti annidati.
Ad esempio, la seguente modifica non viene acquisita.
CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void LANGUAGE plpgsql AS $$ BEGIN create table attu.distributors1(did serial PRIMARY KEY,name varchar(40) NOT NULL); END; $$;
-
Attualmente,
boolean
i tipi di dati in una SQL fonte Postgre vengono migrati verso una destinazione SQL Server come tipi dibit
dati con valori incoerenti. Come soluzione alternativa, precrea la tabella con un tipo diVARCHAR(1)
dati per la colonna (o fai creare la tabella). AWS DMS Quindi fai in modo che l'elaborazione a valle tratti una «F» come False e una «T» come True. -
AWS DMS non supporta l'elaborazione delle modifiche delle operazioni. TRUNCATE
-
Il tipo di OID LOB dati non viene migrato verso la destinazione.
AWS DMS supporta il tipo di GIS dati Post solo per le migrazioni omogenee.
-
Se la tua fonte è un SQL database Postgre locale o su un'EC2istanza Amazon, assicurati che il plug-in di output test_decoding sia installato sull'endpoint di origine. Puoi trovare questo plugin nel pacchetto contrib di Postgre. SQL Per ulteriori informazioni sul plugin test-decoding, consulta la documentazione di Postgre. SQL
-
AWS DMS non supporta l'elaborazione delle modifiche per impostare e annullare i valori predefiniti delle colonne (utilizzando la clausola sulle istruzioni). ALTER COLUMN SET DEFAULT ALTER TABLE
-
AWS DMS non supporta l'elaborazione delle modifiche per impostare l'annullabilità delle colonne (utilizzando la NOT NULL clausola ALTER COLUMN [SET|DROP] sulle istruzioni). ALTER TABLE
-
Quando la replica logica è abilitata, il numero massimo di modifiche conservate in memoria per transazione è 4 MB. Dopodiché, le modifiche vengono riversate su disco. Di conseguenza
ReplicationSlotDiskUsage
aumenta erestart_lsn
non avanza finché la transazione non viene completata o interrotta e il rollback non termina. Poiché si tratta di una transazione lunga, il rollback può richiedere tempi lunghi. Pertanto, evita transazioni di lunga durata o molte sottotransazioni quando la replica logica è abilitata. Prova invece a suddividere la transazione in diverse transazioni più piccole.SQLNelle versioni 13 e successive di Aurora Postgre, è possibile ottimizzare il
logical_decoding_work_mem
parametro per controllare quando le DMS fuoriuscite modificano i dati sul disco. Per ulteriori informazioni, consulta Versare file in Aurora Postgre SQL. -
Una tabella con un tipo di ARRAY dati deve avere una chiave primaria. Una tabella con un tipo di ARRAY dati privo di una chiave primaria viene sospesa durante il caricamento completo.
-
AWS DMS non supporta la replica di tabelle partizionate. Quando viene rilevata una tabella partizionata, avviene quanto segue:
-
L'endpoint fornisce un report di tabelle padre e figlio.
-
AWS DMS crea la tabella sulla destinazione come tabella normale con le stesse proprietà delle tabelle selezionate.
-
Se la tabella padre nel database di origine ha lo stesso valore di chiave primaria delle tabelle figlio, viene generato un errore di "chiavi duplicate".
-
-
Per replicare le tabelle partizionate da una SQL sorgente Postgre a una destinazione Postgre, create prima manualmente le tabelle padre e figlio sulla SQL destinazione. Quindi definisci un'attività separata per la replica su tali tabelle. In questo caso, imposta la configurazione dell'attività su Tronca prima di caricare.
-
Il tipo di dati SQL
NUMERIC
Postgre non ha una dimensione fissa. Quando si trasferiscono dati con un tipo diNUMERIC
dati ma senza precisione e scala, DMS utilizzaNUMERIC(28,6)
(una precisione di 28 e una scala di 6) per impostazione predefinita. Ad esempio, il valore 0.611111104488373 dall'origine viene convertito in 0,611111 sulla destinazione Postgre. SQL -
AWS DMS supporta Aurora Postgre SQL Serverless V1 come fonte solo per attività a pieno carico. AWS DMS supporta Aurora Postgre SQL Serverless V2 come fonte per attività a pieno carico, a pieno carico e solo. CDC CDC
-
AWS DMS non supporta la replica di una tabella con un indice univoco creato con una funzione coalesce.
-
Quando si utilizza la LOB modalità, sia la tabella di origine che la tabella di destinazione corrispondente devono avere una chiave primaria identica. Se una delle tabelle non ha una chiave primaria, il risultato DELETE e le operazioni di UPDATE registrazione saranno imprevedibili.
-
Quando si utilizza la funzionalità di caricamento parallello, la segmentazione delle tabelle in base a partizioni o sottopartizioni non è supportata. Per ulteriori informazioni sul caricamento parallelo, consulta Utilizzo del caricamento parallelo per le tabelle, le viste e le raccolte selezionate.
-
AWS DMS non supporta i vincoli differiti.
-
AWS DMS la versione 3.4.7 supporta Postgre SQL 14.x come sorgente con queste limitazioni:
-
AWS DMS non supporta l'elaborazione delle modifiche dei commit in due fasi.
-
AWS DMS non supporta la replica logica per lo streaming di lunghe transazioni in corso.
-
-
AWS DMS non supporta CDC Amazon RDS Proxy for Postgre SQL come sorgente.
-
Quando si utilizzano filtri di origine che non contengono una colonna di chiave primaria, le operazioni
DELETE
non verranno acquisite. -
Se il database di origine è anche la destinazione di un altro sistema di replica di terze parti, DDL è possibile che le modifiche non vengano migrate durante il periodo. CDC in quanto potrebbero impedire l'attivazione del trigger dell'evento
awsdms_intercept_ddl
. Per aggirare la situazione, modifica il trigger nel database di origine come segue:alter event trigger awsdms_intercept_ddl enable always;
-
AWS DMS non supporta il CDC cluster di database Amazon RDS Multi-AZ per Postgre SQL come origine, poiché RDS per Postgre i cluster di database SQL Multi-AZ non supportano la replica logica.
Tipi di dati di origine per Postgre SQL
La tabella seguente mostra i tipi di dati di SQL origine di Postgre supportati durante l'utilizzo AWS DMS e la mappatura predefinita ai tipi di dati. AWS DMS
Per informazioni su come visualizzare il tipo di dati mappato nella destinazione, consulta la sezione relativa all'endpoint di destinazione che stai utilizzando.
Per ulteriori informazioni sui tipi di AWS DMS dati, vedere. Tipi di dati per AWS Database Migration Service
Tipi di dati Postgres SQL |
DMStipi di dati |
---|---|
INTEGER |
INT4 |
SMALLINT |
INT2 |
BIGINT |
INT8 |
NUMERIC(p, s) |
Se la precisione è compresa tra 0 e 38, utilizzareNUMERIC. Se la precisione è pari o superiore a 39, utilizzareSTRING. |
DECIMAL(P, S) |
Se la precisione è compresa tra 0 e 38, utilizzareNUMERIC. Se la precisione è pari o superiore a 39, utilizzareSTRING. |
REAL |
REAL4 |
DOUBLE |
REAL8 |
SMALLSERIAL |
INT2 |
SERIAL |
INT4 |
BIGSERIAL |
INT8 |
MONEY |
NUMERIC(38,4) Il tipo di MONEY dati è mappato su ServerFLOAT. SQL |
CHAR |
WSTRING(1) |
CHAR(N) |
WSTRING(n) |
VARCHAR(N) |
WSTRING(n) |
TEXT |
NCLOB |
CITEXT |
NCLOB |
BYTEA |
BLOB |
TIMESTAMP |
DATETIME |
TIMESTAMP WITH TIME ZONE |
DATETIME |
DATE |
DATE |
TIME |
TIME |
TIME WITH TIME ZONE |
TIME |
INTERVAL |
STRING(128) —1YEAR, 2MONTHS, 3DAYS, 4HOURS, 5MINUTES, 6 SECONDS |
BOOLEAN |
CHAR(5) falso o vero |
ENUM |
STRING(64) |
CIDR |
STRING(50) |
INET |
STRING(50) |
MACADDR |
STRING(18) |
BIT(n) |
STRING(n) |
BITVARYING(n) |
STRING(n) |
UUID |
STRING |
TSVECTOR |
CLOB |
TSQUERY |
CLOB |
XML |
CLOB |
POINT |
STRING(255) «(x, y)» |
LINE |
STRING(255) «(x, y, z)» |
LSEG |
STRING(255) «(x1, y1), (x2, y2)» |
BOX |
STRING(25) «(x1, y1), (x2, y2)» |
PATH |
CLOB«(x1, y1), (xn, yn)» |
POLYGON |
CLOB«(x1, y1), (xn, yn)» |
CIRCLE |
STRING(255) «(x, y), r» |
JSON |
NCLOB |
JSONB |
NCLOB |
ARRAY |
NCLOB |
COMPOSITE |
NCLOB |
HSTORE |
NCLOB |
INT4RANGE |
STRING(255) |
INT8RANGE |
STRING(255) |
NUMRANGE |
STRING(255) |
STRRANGE |
STRING(255) |
Lavorare con i tipi LOB di dati di origine per Postgre SQL
Le dimensioni delle SQL colonne di Postgre influiscono sulla conversione dei tipi di dati Postgre SQL LOB in tipi di dati. AWS DMS Per utilizzare questa funzione, effettua la procedura riportata di seguito per i seguenti tipi di dati AWS DMS :
-
BLOB— Imposta la LOBdimensione limite al valore della LOBdimensione massima (KB) al momento della creazione dell'attività.
-
CLOB— La replica gestisce ogni personaggio come un UTF8 personaggio. Pertanto, individua il testo con il maggiore numero di caratteri nella colonna
max_num_chars_text
. Utilizzate questa lunghezza per specificare il valore di Limita la LOB dimensione a. Se i dati includono caratteri a 4 byte, moltiplicali per 2 per specificare la LOBdimensione limite al valore, che è espressa in byte. In questo caso, la LOBdimensione limite a è uguale a moltiplicata permax_num_chars_text
2. -
NCLOB— La replica gestisce ogni carattere come carattere a doppio byte. Pertanto, individua il testo con il maggiore numero di caratteri nella colonna (
max_num_chars_text
) e moltiplicarlo per 2. Questa operazione viene eseguita per specificare il valore di Limita LOB la dimensione a. In questo caso, Limit LOB size to è uguale amax_num_chars_text
moltiplicato per 2. Se i dati includono caratteri a 4 byte, moltiplicare ancora per 2. In questo caso, la LOBdimensione limite a è uguale amax_num_chars_text
moltiplicata per 4.