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à.
Trasporto dei database PostgreSQL tra istanze database
Utilizzando Transportable Database di PostgreSQL per Amazon RDS, puoi spostare un database PostgreSQL tra due istanze database. Si tratta di un modo molto rapido per migrare database di grandi dimensioni tra diverse istanze database. Per utilizzare questo approccio, le istanze database devono essere entrambe eseguite con la stessa versione principale di PostgreSQL.
Questa funzionalità richiede l'installazione dell’estensione pg_transport sull'istanza database di origine e destinazione. L’estensione pg_transport fornisce un meccanismo di trasporto fisico che consente di spostare i file del database con elaborazione minima. Questo meccanismo consente di spostare i dati più rapidamente rispetto ai tradizionali processi dump e load, con tempi di inattività molto ridotti.
Nota
Transportable Database di PostgreSQL è disponibile in RDS for PostgreSQL versioni 11.5 e in RDS for PostgreSQL versioni 10.10 e successive.
Per trasportare un'istanza database PostgreSQL da un'istanza database RDS for PostgreSQL a un'altra, è necessario innanzitutto impostare le istanze di origine e di destinazione come descritto in Configurazione di un’istanza database per il trasporto. È quindi possibile trasportare il database utilizzando la funzione descritta in Trasporto di un database PostgreSQL.
Argomenti
Cosa succede durante il trasporto del database
La funzione Transportable Database di PostgreSQL utilizza un modello pull per importare il database dall'istanza database di origine alla destinazione. La funzione transport.import_from_server crea il database in transito nell'istanza database di destinazione. Il database in transito non è accessibile nell'istanza database di destinazione per tutta la durata del trasporto.
All'avvio del trasporto, tutte le sessioni correnti nel database di origine vengono terminate. Nessun database, oltre al database di origine nell'istanza database di origine, viene interessato dal trasporto.
Il database di origine passa in una modalità speciale di sola lettura. In questa modalità, puoi connetterti al database di origine ed eseguire query di sola lettura. Invece, le query abilitate per la scrittura e alcuni altri tipi di comandi sono bloccati. Solo lo specifico database di origine trasportato è sottoposto a queste limitazioni.
Durante il trasporto, non puoi ripristinare l'istanza database di destinazione a un point-in-time perché il trasporto non è transazionale e non utilizza il log write-ahead (WAL) di PostgreSQL per registrare le modifiche. Se nell'istanza database di destinazione sono abilitati i backup automatici, dopo il trasporto viene eseguito automaticamente un backup. I ripristini point-in-time sono disponibili per un certo periodo di tempo dopo il completamento del backup.
Se il trasporto non riesce, l'estensione pg_transport tenta di annullare tutte le modifiche alle istanze database di origine e di destinazione, inclusa la rimozione del database parzialmente trasportato nella destinazione. A seconda del tipo di errore, il database di origine potrebbe continuare a rifiutare le query abilitate per la scrittura. Se accade, utilizza il comando seguente per consentirle.
ALTER DATABASEdb-nameSET default_transaction_read_only = false;
Limitazioni all'utilizzo di Transportable Database di PostgreSQL
Transportable Database ha le limitazioni seguenti:
Repliche di lettura – I database trasportabili non possono essere utilizzati su repliche di lettura o istanze padre di repliche di lettura.
-
Tipi di colonne non supportati – Impossibile utilizzare i tipi di dati
regnelle tabelle di database che si intendono trasportare con questo metodo. Questi tipi dipendono dagli ID oggetto del catalogo di sistema (OID), che spesso vengono modificati durante il trasporto. -
Spazi tabelle – Tutti gli oggetti del database di origine devono trovarsi nello spazio tabelle
pg_defaultpredefinito. -
Compatibilità – Le istanze database di origine e di destinazione devono eseguire la stessa versione principale di PostgreSQL.
-
Estensioni – L'istanza database di origine può avere solo
pg_transportinstallato. -
Ruoli e liste di controllo accessi (ACL) – I privilegi di accesso al database di origine e le informazioni di proprietà non vengono trasferite nel database di destinazione. Tutti gli oggetti del database vengono creati e assegnati all'utente di destinazione locale del trasporto.
Trasporti simultanei – Una singola istanza database può supportare fino a 32 trasporti simultanei, comprese le importazioni e le esportazioni, se i processi di lavoro sono stati configurati correttamente.
-
Solo istanze database RDS for PostgreSQL – Sono supportati solo database trasportabili sulle istanze database RDS for PostgreSQL. Non è possibile utilizzarlo con database o database locali in esecuzione su Amazon EC2.