Utilizzo di un SQL database Postgre come fonte AWS DMS - AWS Servizio di migrazione del Database

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:

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. DMS

    Quando 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 ruolo rds_replication. Il ruolo rds_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

No

Aurora Postgre SQL versione 2.2 con compatibilità Postgre 10.6 (o superiore) SQL

RDSper Postgre con compatibilità con Postgre 10.21 SQL (o superiore) SQL

Per abilitare la replica logica per un'istanza DB Postgre RDS SQL
  1. 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.

  2. 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 parametri wal_level, max_wal_senders, max_replication_slots e max_connections. Queste modifiche ai parametri possono aumentare la generazione di write ahead log (WAL), quindi impostatele solo rds.logical_replication quando utilizzate slot di replica logici.

  3. 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. DMS

    Quando 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

  4. 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 di max_logical_replication_workers, autovacuum_max_workers e max_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 di max_worker_processes superiore a quello predefinito.

  5. 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
  1. Scegli lo schema in cui devono essere creati gli oggetti. Lo schema predefinito è public. Verifica che lo schema esista e che l'account OtherThanMaster vi possa accedere.

  2. Accedi all'istanza di Postgre SQL DB utilizzando l'account utente diverso dall'account master, qui l'OtherThanMasteraccount.

  3. Crea la tabella awsdms_ddl_audit eseguendo il comando seguente, sostituendo objects_schema nel codice e il nome dello schema da utilizzare.

    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 );
  4. Crea la funzione awsdms_intercept_ddl eseguendo il comando seguente, sostituendo objects_schema nel codice e il nome dello schema da utilizzare.

    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 into objects_schema.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete from objects_schema.awsdms_ddl_audit; end if; END; $$;
  5. Esci dall'account OtherThanMaster e collegati con un account che disponga del ruolo rds_superuser.

  6. 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();
  7. 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

Amazon RDS Postgree SQL 9.5 o versioni precedenti

No

Amazon RDS Postgree SQL 9.6 o versioni successive

Aurora SQL Postgre da 1.x a 2.5.x

No

Aurora SQL Postgre 2.6.x o versioni successive

Aurora SQL Postgre 3.3.x o versioni successive

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

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
  1. Crea un'estensione pglogical sul tuo database Postgre di origine: SQL

    1. 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 parametro pglogical su nello stesso gruppo di parametri. RDS

    2. Riavvia il database di origine di Postgre. SQL

    3. Sul SQL database Postgre, esegui il comando, create extension pglogical;

  2. 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
  1. 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.

  2. Creare un nuovo endpoint di origine che include la seguente impostazione dell'attributo di connessione aggiuntivo:

    slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;
  3. 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 e replication-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 visualizzazione pg_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
  1. Crea uno slot di replica come illustrato di seguito:

    SELECT * FROM pg_create_logical_replication_slot('replication_slot_name', 'pglogical');
  2. 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.

  3. Crea un nodo pglogical.

    SELECT pglogical.create_node(node_name := 'node_name', dsn := 'your_dsn_name');
  4. 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);
  5. 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);
  6. 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. SQL

  • DMSnon 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 FULLregistra i vecchi valori di tutte le colonne della riga. REPLICA IDENTITY FULLUsalo con cautela per ogni tabella poiché ne FULL 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 '{"EndpointSetting": "value", ...}'JSON

La tabella seguente mostra le impostazioni dell'endpoint e ECAs che è possibile utilizzare con SQL Postgre come sorgente.

Nome attributo Descrizione

CaptureDdls

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: true

Valori validi: true/false

Esempio: --postgre-sql-settings '{"CaptureDdls": true}'

ConsumeMonotonicEvents

Utilizzato per controllare la modalità di replica delle transazioni monolitiche con numeri di sequenza logaritmica () LSNs duplicati. Quando questo parametro è impostatofalse, gli eventi con duplicati LSNs vengono consumati e replicati sulla destinazione. Quando questo parametro è impostatotrue, viene replicato solo il primo evento, mentre gli eventi con duplicato LSNs non vengono consumati né replicati sulla destinazione.

Valore predefinito: false

Valori validi: false/true

Esempio: --postgre-sql-settings '{"ConsumeMonotonicEvents": true}'

DdlArtifactsSchema

Imposta lo schema in cui vengono creati gli artefatti del DDL database operativo.

Valore predefinito: pubblico

Valori validi: stringa

Esempio: --postgre-sql-settings '{"DdlArtifactsSchema": "xyzddlschema"}'

ExecuteTimeout

Imposta il timeout dell'istruzione client per l'istanza PostgreSQL, in secondi. Il valore predefinito è 60 secondi.

Esempio: --postgre-sql-settings '{"ExecuteTimeout": 100}'

FailTasksOnLobTruncation

Se impostato sutrue, questo valore causa il fallimento di un'operazione se la dimensione effettiva di una LOB colonna è maggiore di quella specificata. LobMaxSize

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: --postgre-sql-settings '{"FailTasksOnLobTruncation": true}'

fetchCacheSize

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: 10000

Valori validi: numero

ECAEsempio: fetchCacheSize=10000;

HeartbeatEnable

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 restart_lsn in movimento e previene scenari di saturazione dello storage.

Valore predefinito: false

Valori validi: true/false

Esempio: --postgre-sql-settings '{"HeartbeatEnable": true}'

HeartbeatFrequency

Imposta la WAL frequenza del battito cardiaco (in minuti).

Valore predefinito: 5

Valori validi: numero

Esempio: --postgre-sql-settings '{"HeartbeatFrequency": 1}'

HeartbeatSchema

Imposta lo schema in cui vengono creati gli artefatti di heartbeat.

Valore predefinito: public

Valori validi: stringa

Esempio: --postgre-sql-settings '{"HeartbeatSchema": "xyzheartbeatschema"}'

MapJsonbAsClob

Per impostazione predefinita, esegue il AWS DMS mapping JSONB su. NCLOB È possibile specificare MapJsonbAsClob di consentire a Postgre di SQL migrare il JSONB tipo come. CLOB

Esempio: --postgre-sql-settings='{"MapJsonbAsClob": "true"}'

MapLongVarcharAs

Per impostazione predefinita, esegue il mapping a AWS DMS . VARCHAR WSTRING Puoi specificare di consentire MapLongVarcharAs a Postgre di SQL migrare il tipo VARCHAR (N) (dove N è maggiore di 16387) ai seguenti tipi:

  • WSTRING

  • CLOB

  • NCLOB

Esempio: --postgre-sql-settings='{"MapLongVarcharAs": "CLOB"}'

MapUnboundedNumericAsString

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: false

Valori validi: false/true

Esempio: --postgre-sql-settings '{"MapUnboundedNumericAsString": true}'

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

Nota

Utilizzalo solo insieme MapUnboundedNumericAsString negli endpoint di SQL origine e di destinazione di Postgre.

L'uso di SQL endpoint Postgre di origine limita la precisione a 28 MapUnboundedNumericAsString durante. CDC L'uso di MapUnboundedNumericAsString su endpoint di destinazione, migra i dati con precisione 28 scala 6.

Non utilizzare MapUnboundedNumericAsString con target diversi da Postgre. SQL

PluginName

Specifica il plug-in da utilizzare per creare uno slot di replica.

Valori validi: pglogical, test_decoding

Esempio: --postgre-sql-settings '{"PluginName": "test_decoding"}'

SlotName

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 CdcStartPosition request, questo attributo consente anche l'utilizzo di punti di partenza nativiCDC. DMSverifica che lo slot di replica logica specificato esista prima di iniziare l'attività di CDC caricamento. Verifica inoltre che l'attività sia stata creata con un'impostazione valida di CdcStartPosition. Se lo slot specificato non esiste o l'attività non ha un'CdcStartPositionimpostazione valida, DMS genera un errore.

Per ulteriori informazioni su come impostare il parametro della richiesta CdcStartPosition, consulta Determinazione di un punto di inizio nativo CDC. Per ulteriori informazioni sull'utilizzoCdcStartPosition, consultate la documentazione relativa a CreateReplicationTaskStartReplicationTask, e ModifyReplicationTask API le operazioni nella Guida di AWS Database Migration Service APIriferimento.

Valori validi: stringa

Esempio: --postgre-sql-settings '{"SlotName": "abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef"}'

unboundedVarcharMaxSize

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 di bit dati con valori incoerenti. Come soluzione alternativa, precrea la tabella con un tipo di VARCHAR(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 e restart_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 di NUMERIC dati ma senza precisione e scala, DMS utilizza NUMERIC(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 per max_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 a max_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 a max_num_chars_text moltiplicata per 4.