Panoramica
Prima di scegliere di eseguire la migrazione dei database a Cloud SQL, assicurati di tenere in considerazione 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+.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 aienumtipi.Ad esempio,
pglogicalfornisce una funzionepglogical.replicate_ddl_commandche consente di eseguire il DDL sia sul database di origine sia sulla replica in un punto coerente. L'utente che esegue questo comando sull'origine deve già esistere sulla replica.Per replicare i dati per le nuove tabelle, devi utilizzare il comando
pglogical.replication_set_add_tableper aggiungere le nuove tabelle ai set di repliche esistenti.Per saperne di più sulla replica DDL durante la migrazione in corso, consulta la sezione sulla fedeltà della migrazione.
Per le tabelle senza chiavi primarie, Database Migration Service supporta la migrazione degli snapshot iniziali e delle istruzioni
INSERTdurante la fase Change Data Capture (CDC). Devi eseguire la migrazione manuale delle istruzioniUPDATEeDELETE.Database Migration Service non esegue la migrazione dei dati dalle viste materializzate, ma solo dello schema della vista. Per popolare le viste, esegui il comando
REFRESH MATERIALIZED VIEW view_name.Gli stati
SEQUENCE(ad esempiolast_value) nella nuova destinazione Cloud SQL potrebbero variare rispetto agli statiSEQUENCEdi origine.Le tabelle
UNLOGGEDeTEMPORARYnon vengono e non possono essere replicate.Il tipo di dati Large Object non è supportato. Ulteriori dettagli nella sezione sulla fedeltà della migrazione.
È possibile eseguire la migrazione solo delle estensioni e dei linguaggi procedurali supportati 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 procedura di migrazione senza problemi, verifica che i tuoi oggetti o applicazioni non facciano riferimento a estensioni non supportate. Ti consigliamo di rimuovere queste estensioni e i riferimenti dal database di origine prima di procedere.
L'estensione
pg_cron(o qualsiasi impostazionecronassociata all'estensione) non viene migrata da Database Migration Service, ma è supportata nelle destinazioni Cloud SQL per PostgreSQL. Se utilizzi l'estensionepg_cronnei database di origine, puoi reinstallarla nell'istanza di destinazione al termine della migrazione.
Database Migration Service non supporta la migrazione da repliche di lettura in modalità di ripristino.
Database Migration Service non supporta le origini Amazon RDS in cui è applicato il pacchetto di estensioni AWS SCT.
- Non è possibile eseguire la migrazione delle funzioni definite dall'utente scritte in C, ad eccezione delle funzioni installate nel database PostgreSQL quando installi le estensioni supportate da Cloud SQL.
Se nel database di origine esistono altre estensioni e linguaggi procedurali o se le relative versioni non sono supportate, il job di migrazione non andrà a buon fine quando lo testi o lo avvii.
I database aggiunti dopo l'avvio del job di migrazione non vengono migrati.
- Quando esegui la migrazione utilizzando Database Migration Service, puoi selezionare database specifici. Tuttavia, non puoi selezionare tabelle o schemi specifici all'interno di questi database.
Database Migration Service esegue la migrazione di tutte le tabelle e gli schemi dai database selezionati, ad eccezione di:
- Lo schema di 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. - Le informazioni su utenti e ruoli utente non vengono migrate.
- Lo schema di informazioni (
Se i database criptati richiedono chiavi di crittografia gestite dal cliente per decriptarli e se Database Migration Service non ha accesso alle chiavi, non è possibile eseguire la migrazione dei database.
Tuttavia, se i dati dei clienti sono criptati dall'estensione
pgcrypto, è possibile eseguire la migrazione dei dati con Database Migration Service (perché Cloud SQL supporta l'estensione).Database Migration Service supporta anche la migrazione dei dati da database Amazon Aurora o Amazon RDS criptati, perché questi database gestiscono la decriptografia in modo trasparente nei loro servizi. Per saperne di più, consulta Criptare le risorse Amazon Aurora e Criptare le risorse Amazon RDS.
Il database Cloud SQL di destinazione è scrivibile durante la migrazione per consentire l'applicazione delle modifiche DDL, se necessario. Fai attenzione a non apportare modifiche alla configurazione del database o alle strutture delle tabelle che potrebbero interrompere la procedura di migrazione o incidere sull'integrità dei dati.
Il comportamento dei trigger dipende dalla loro configurazione. Il comportamento predefinito è che non si attivano, ma se sono stati configurati utilizzando l'istruzione
ALTER EVENT TRIGGERoALTER TABLEe lo stato del trigger è impostato su replica o always, si attiveranno sulla replica durante la replica.Le funzioni con security definer verranno create da
cloudsqlexternalsyncnella replica Cloud SQL. Quando viene eseguita da qualsiasi utente, verrà eseguita con i privilegi dicloudsqlexternalsync, che ha i ruolicloudsqlsuperuserecloudsqlreplica. È preferibile limitare l'utilizzo di una funzione security definer solo ad alcuni utenti. Per farlo, l'utente deve revocare i privilegi PUBLIC predefiniti e poi concedere il privilegio di esecuzione in modo selettivo.Cloud SQL non supporta i tablespace personalizzati. Tutti i dati all'interno dei tablespace personalizzati vengono migrati nel tablespace
pg_defaultnell'istanza di destinazione Cloud SQL.Il metodo di connettività delle interfacce Private Service Connect è supportato solo per la migrazione alle istanze di destinazione esistenti. Se vuoi utilizzare la connettività IP privata ed eseguire la migrazione a una nuova istanza di destinazione, utilizza il peering VPC.
Limitazioni per le migrazioni alle istanze di destinazione esistenti
- L'istanza di destinazione esistente può contenere solo i database di sistema predefiniti
configurati automaticamente quando crei l'istanza di destinazione.
La migrazione alle istanze di destinazione esistenti
che contengono dati utente (ad esempio tabelle in schemi di sistema o database)
non è supportata.
Se riscontri problemi a causa di dati aggiuntivi nell'istanza di destinazione esistente, cancella i database nell'istanza di destinazione e riprova a eseguire il job di migrazione. Consulta Cancellare i dati aggiuntivi dall'istanza di destinazione esistente.
- Puoi configurare un solo job di migrazione per istanza di destinazione.
- Puoi eseguire la migrazione solo alle 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 località di backup personalizzata), dopo aver promosso l'istanza, devi personalizzare di nuovo le impostazioni di backup. Durante la procedura 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 comportare la differenza tra le impostazioni dell'istanza di destinazione e la configurazione Terraform utilizzata per il provisioning. Se riscontri questo problema, segui le indicazioni riportate in Diagnosticare i problemi.
Quote
- In qualsiasi momento, possono esistere fino a 2000 profili di connessione e 1000 job di migrazione. Per creare spazio, è possibile eliminare i job di migrazione (compresi quelli completati) e i profili di connessione.
- L'istanza di destinazione esistente può contenere solo i database di sistema predefiniti
configurati automaticamente quando crei l'istanza di destinazione.
La migrazione alle istanze di destinazione esistenti
che contengono dati utente (ad esempio tabelle in schemi di sistema o database)
non è supportata.