Prima di scegliere di eseguire la migrazione dei database a Cloud SQL, considera le limitazioni note per questo scenario di migrazione.
Le limitazioni note per l'utilizzo di un database PostgreSQL come origine includono:
L'estensione
pglogicalnon supporta la replica delle colonne generate per PostgreSQL 12 e versioni successive.Le modifiche alle strutture delle tabelle (DDL) non vengono replicate tramite i comandi DDL standard, ma solo con i comandi eseguiti utilizzando l'estensione
pglogicalutilizzata per la replica. Sono incluse le modifiche ai tipi dienum.- Ad esempio,
pglogicalfornisce la funzionepglogical.replicate_ddl_commandche consente di eseguire il DDL sia sul database di origine che sulla replica in un punto coerente. - Per replicare i dati per le tabelle appena create, devi utilizzare il comando
pglogical.replication_set_add_tableper aggiungere nuove tabelle ai set di replica esistenti. - Per scoprire di più sulla replica DDL durante la migrazione, consulta Fedeltà della migrazione.
- Ad esempio,
Per le tabelle senza chiavi primarie, Database Migration Service supporta la migrazione dello snapshot iniziale e delle istruzioni
INSERTdurante la fase Change Data Capture (CDC). La migrazione delle istruzioniUPDATEeDELETEè diversa per:- Migrazioni standard: non viene eseguita la migrazione delle istruzioni
UPDATEeDELETEper le tabelle senza chiavi primarie. Prima di eseguire la migrazione, devi aggiungere le chiavi primarie per le colonne o eseguire manualmente la migrazione delle istruzioniUPDATEeDELETE. - Migrazioni con avvio rapido: con le migrazioni con avvio rapido, le chiavi primarie non sono necessarie per replicare le operazioni
UPDATEeDELETEse imposti l'identità della replica suINDEXoFULL. La configurazione diREPLICA IDENTITY FULLaumenta il volume del log write-ahead (WAL) e l'overhead delle risorse. Se possibile, è consigliabile aggiungere una chiave primaria. Per saperne di più, consulta la documentazione sull'identità della replica PostgreSQL e la guida alla migrazione rapida.
- Migrazioni standard: non viene eseguita la migrazione delle istruzioni
Database Migration Service non esegue la migrazione dei dati dalle viste materializzate, ma solo dello schema della vista. Per compilare le visualizzazioni nel database di destinazione, esegui:
REFRESH MATERIALIZED VIEW view_name.Gli stati
SEQUENCE(ad esempiolast_value) nella destinazione potrebbero variare rispetto all'origine durante il CDC in corso. I valori della sequenza vengono sincronizzati durante il passaggio di promozione finale.Le tabelle
UNLOGGEDeTEMPORARYnon sono e non possono essere replicate.Il tipo di dati Large Object (
oidche fa riferimento apg_largeobject) non è supportato dalla decodifica logica di PostgreSQL.È possibile eseguire la migrazione solo delle estensioni supportate da Cloud SQL per PostgreSQL. Database Migration Service non esegue la migrazione delle estensioni non supportate da Cloud SQL. La presenza di queste estensioni non blocca la migrazione, ma per garantire una migrazione senza problemi, verifica che le tue applicazioni non facciano riferimento a estensioni non supportate. Per l'elenco delle estensioni supportate, consulta Estensioni PostgreSQL nella documentazione di Cloud SQL.
L'estensione
pg_cron(o qualsiasi cron job configurato all'interno dell'estensione) non viene migrata da Database Migration Service, ma è supportata nelle destinazioni Cloud SQL per PostgreSQL. Se utilizzipg_cronnei database di origine, reinstalla l'estensione e configura i cron job nell'istanza di destinazione al termine della migrazione.Database Migration Service non supporta la migrazione da repliche di lettura in modalità Recovery [Recovery mode].
Database Migration Service non supporta le origini Amazon RDS in cui è applicato il pacchetto di estensione AWS SCT.
Non è possibile eseguire la migrazione delle funzioni definite dall'utente scritte in C, ad eccezione delle funzioni installate durante la creazione di estensioni supportate da Cloud SQL.
Se nel database di origine esistono altre estensioni e le relative versioni non sono supportate da Cloud SQL, il test o l'avvio del job di migrazione non andrà a buon fine.
I database aggiunti all'istanza di origine dopo l'avvio del job di migrazione non vengono migrati.
Puoi selezionare database specifici quando esegui la migrazione utilizzando Database Migration Service. Viene eseguita la migrazione di tutte le tabelle e gli schemi dei database selezionati, ad eccezione di:
- Lo schema delle informazioni (
information_schema). - Qualsiasi schema che inizia con
pg_(ad esempiopg_catalog,pg_toast,pgtemp*). Per l'elenco completo dei cataloghi PostgreSQL che iniziano conpg_, consulta Cataloghi di sistema PostgreSQL nella documentazione di PostgreSQL. - Credenziali di accesso e ruoli degli utenti.
- Lo schema delle informazioni (
Se i database criptati richiedono chiavi di crittografia gestite dal cliente (CMEK) per decriptare i dati e Database Migration Service non ha accesso alle chiavi, non è possibile eseguire la migrazione dei database. Tuttavia, è possibile eseguire la migrazione dei dati criptati con l' estensione
pgcryptoperché Cloud SQL supportapgcrypto. Database Migration Service supporta anche la migrazione da database Amazon Aurora o Amazon RDS criptati, perché AWS gestisce la decriptazione in modo trasparente. Per saperne di più, consulta Crittografia delle risorse Amazon Aurora e Crittografia delle risorse Amazon RDS.Comportamento operativo del database di destinazione durante la migrazione:
Database di destinazione scrivibile: Cloud SQL per PostgreSQL non esegue il database di destinazione in modalità di sola lettura durante la migrazione. L'istanza di destinazione non viene retrocessa quando viene creata da Database Migration Service.
Evita le operazioni di scrittura sui dati in fase di migrazione: non eseguire operazioni di scrittura (come
INSERT,UPDATE,DELETEo modifiche dello schema DDL) su tabelle o database che partecipano alla migrazione. L'esecuzione di scritture sui dati in fase di migrazione può causare conflitti di replica con il flusso Change Data Capture (CDC) in entrata.Gestisci gli utenti del database: puoi creare e gestire gli utenti del database in qualsiasi momento utilizzando i comandi
psqlstandard o tramite Cloud SQL nella console Google Cloud . Per saperne di più, consulta Gestisci gli utenti nella documentazione di Cloud SQL.Funzionalità sospese: i backup automatici e il recupero point-in-time (PITR) vengono sospesi durante la replica continua. Inoltre, non puoi creare repliche di lettura Cloud SQL dall'istanza di destinazione finché il job di migrazione non viene promosso.
Il comportamento del trigger dipende dalla sua configurazione. Per impostazione predefinita, i trigger non vengono attivati sulla replica durante la replica, a meno che non siano configurati con
ALTER EVENT TRIGGERoALTER TABLE ... ENABLE ALWAYS TRIGGER.Le funzioni definite con
SECURITY DEFINERvengono create dacloudsqlexternalsyncnell'istanza Cloud SQL di destinazione, che dispone di privilegi elevati. Limita i privilegi di esecuzione sulle funzioniSECURITY DEFINERsensibili revocando le autorizzazioni pubbliche e concedendo l'accesso in modo selettivo.Cloud SQL non supporta i tablespace personalizzati. Tutti gli oggetti all'interno dei tablespace personalizzati vengono migrati al tablespace
pg_defaultpredefinito in Cloud SQL.Il metodo di connettività delle interfacce Private Service Connect è supportato solo per la migrazione a istanze di destinazione esistenti. Se vuoi utilizzare la connettività IP privato ed eseguire la migrazione a una nuova istanza di destinazione, utilizza il peering VPC.
Limitazioni per le migrazioni a istanze di destinazione esistenti
- Retrocessione dell'istanza di destinazione per le migrazioni standard:
per le migrazioni standard alle istanze Cloud SQL esistenti, Database Migration Service
retrocede l'istanza autonoma per configurarla come replica esterna del
database di origine.
- La retrocessione dell'istanza non imposta il motore PostgreSQL in modalità di sola lettura, ma devi evitare le operazioni di scrittura sulle tabelle di migrazione per evitare conflitti di replica.
- La retrocessione dell'istanza sospende i backup automatici e il recupero point-in-time (PITR) e impedisce l'aggiunta di repliche di lettura Cloud SQL fino alla promozione.
- Devi confermare la retrocessione quando crei il job di migrazione nella console Google Cloud inserendo l'ID istanza di destinazione (o eseguendo
gcloud database-migration migration-jobs demote-destination). -
Le migrazioni con avvio rapido utilizzano la replica logica di PostgreSQL
pgnativee non richiedono né eseguono la retrocessione dell'istanza di destinazione.
- L'istanza di destinazione esistente può contenere solo i database di sistema predefiniti che vengono configurati automaticamente quando crei l'istanza di destinazione. La migrazione a istanze di destinazione esistenti che contengono dati utente non è supportata.
Se riscontri problemi dovuti a dati aggiuntivi nell'istanza di destinazione esistente, cancella i database nell'istanza di destinazione e riprova a eseguire il job di migrazione. Consulta Cancella i dati aggiuntivi dall'istanza di destinazione esistente.
- Puoi configurare un solo job di migrazione per istanza di destinazione.
- Puoi eseguire la migrazione solo a istanze Cloud SQL autonome. La migrazione alle repliche del server esterno non è supportata.
- Dopo aver promosso un'istanza, devi attivare il recupero point-in-time.
- Se l'istanza ha impostazioni di backup personalizzate (ad esempio, una posizione di backup personalizzata), devi ripristinare le impostazioni di backup dopo la promozione. Durante il processo di promozione, Cloud SQL reimposta le impostazioni di backup sui valori predefiniti.
- Per gli utenti di Terraform: Database Migration Service modifica le impostazioni di backup e ripristino dell'istanza di destinazione. Ciò potrebbe far sì che le impostazioni dell'istanza di destinazione differiscano dalla configurazione Terraform utilizzata per il provisioning. Se riscontri questo problema, consulta le indicazioni riportate in Diagnostica i problemi.
Quote
- In qualsiasi momento, possono esistere fino a 2000 profili di connessione e 1000 job di migrazione. Per creare spazio per altri, elimina i job di migrazione e i profili di connessione inutilizzati.
Compatibilità delle versioni delle estensioni PostgreSQL durante gli upgrade delle versioni principali
Quando esegui la migrazione a una versione principale di PostgreSQL successiva, Database Migration Service utilizza l'utilità pg_restore, che installa la versione predefinita dell'estensione della versione principale di PostgreSQL di destinazione. Non puoi specificare una versione esatta dell'estensione per l'utilità pg_restore.
Se il database di origine utilizza una versione dell'estensione non compatibile con lo schema della versione predefinita installata nella versione principale di PostgreSQL di destinazione, la migrazione potrebbe non riuscire a causa di una mancata corrispondenza dello schema o di errori interni.
Per evitare errori di migrazione, verifica la compatibilità dello schema. Prima di eseguire la migrazione, esegui l'upgrade delle estensioni nel database di origine a una versione compatibile con la versione principale di PostgreSQL di destinazione.