Creare un job di migrazione in una nuova istanza di destinazione

Quando crei l'istanza di destinazione con Database Migration Service, questa istanza non viene retrocessa e non viene eseguita in modalità di sola lettura, ma l'esecuzione di determinate operazioni durante il processo di migrazione potrebbe causare errori di migrazione. Durante la migrazione a una nuova istanza di destinazione, tieni presente le seguenti considerazioni operative:

  • Evita le operazioni di scrittura sui dati in fase di migrazione: non eseguire operazioni di scrittura (come INSERT, UPDATE, DELETE o modifiche dello schema DDL) nell'istanza di destinazione su tabelle o database inclusi nella migrazione. Queste operazioni potrebbero causare conflitti di replica con i dati provenienti dall'origine.
  • Gestisci gli utenti del database: puoi creare e gestire gli utenti del database in qualsiasi momento utilizzando i comandi psql standard o tramite Cloud SQL nella console Google Cloud . Per saperne di più, consulta Gestisci gli utenti nella documentazione di Cloud SQL.
  • Backup e repliche di lettura: i backup automatici e il recupero point-in-time (PITR) vengono sospesi durante la replica continua e non puoi creare repliche di lettura Cloud SQL dall'istanza di destinazione finché non viene promosso il job di migrazione.

Per saperne di più, consulta Limitazioni note.

La creazione di un job di migrazione include:

  1. Definizione delle impostazioni per il job di migrazione.
  2. Definizione delle impostazioni di origine e selezione dei database di cui eseguire la migrazione.
  3. Definizione delle impostazioni per l'istanza di database Cloud SQL di destinazione e creazione dell'istanza.
  4. Configurazione della connettività tra le istanze del database di origine e di destinazione.
  5. Test del job di migrazione per assicurarti che le informazioni di connessione fornite per il job siano valide.

Per creare un job di migrazione in una nuova istanza di destinazione, segui questi passaggi:

Console

Definisci le impostazioni per il job di migrazione

  1. Nella console Google Cloud , vai alla pagina Job di migrazione.

    Vai a Job di migrazione

  2. Fai clic su Crea job di migrazione.

    Si apre la pagina della procedura guidata di configurazione del job di migrazione. Questa procedura guidata contiene più riquadri che ti guidano attraverso ogni passaggio della configurazione.

    Puoi mettere in pausa la creazione di un job di migrazione in qualsiasi momento facendo clic su Salva ed esci. Tutti i dati inseriti fino a quel momento vengono salvati in una bozza di job di migrazione. Puoi completare la bozza del job di migrazione in un secondo momento.

  3. Nella pagina Inizia, inserisci le seguenti informazioni:
    1. Nome job di migrazione

      Questo è un nome leggibile per il job di migrazione. Questo valore viene visualizzato nella console Google Cloud .

    2. ID job di migrazione

      Si tratta di un identificatore leggibile da macchina per il job di migrazione. Utilizza questo valore per lavorare con i job di migrazione utilizzando i comandi o l'API di Google Cloud CLI di Database Migration Service.

    3. Dall'elenco Motore del database di origine, seleziona PostgreSQL.

      Il campo Motore del database di destinazione viene compilato automaticamente con Cloud SQL per PostgreSQL e non può essere modificato.

    4. Seleziona la regione in cui salvare il job di migrazione.

      Database Migration Service è un prodotto completamente regionale, il che significa che tutte le entità correlate alla migrazione (profili di connessione di origine e di destinazione, job di migrazione, database di destinazione) devono essere salvate in un'unica regione. Seleziona la regione in base alla località dei servizi che richiedono i tuoi dati, ad esempio istanze di Compute Engine o app di App Engine e altri servizi. Dopo aver scelto la regione di destinazione, questa selezione non può essere modificata.

    5. Specifica il tipo di job di migrazione: Una tantum o Continuo.
    6. Esamina i prerequisiti generati per il tuo ambiente. Assicurati che il database di origine sia configurato correttamente. Per saperne di più, consulta Configura il database di origine.
  4. Fai clic su Salva e continua.

Specifica le informazioni sul profilo di connessione di origine

Nella pagina Definisci un'origine, segui questi passaggi:

  1. Dal menu a discesa Profilo di connessione di origine, seleziona il profilo di connessione per il database di origine (o fai clic su Crea un profilo di connessione, vedi Crea un profilo di connessione di origine).
  2. Nella sezione Personalizza configurazioni di parallelismo, fai clic su Mostra configurazioni di parallelismo.

    La velocità del parallelismo del dump dei dati è correlata alla quantità di carico indotto sul database di origine. Puoi utilizzare le seguenti impostazioni:

    • Ottimale (consigliata): prestazioni bilanciate con un carico ottimale sul database di origine.
    • Massima: offre le velocità di dump più elevate, ma potrebbe causare un aumento del carico sul database di origine.
    • Minimo: utilizza la quantità minima di risorse di calcolo sul database di origine, ma potrebbe avere un throughput di dump più lento.

    Se scegli impostazioni di parallelismo modificate, assicurati di aumentare i parametri max_replication_slots, max_wal_senders e max_worker_processes nel database di origine. Puoi verificare la configurazione eseguendo il test del job di migrazione al termine della creazione del job.

  3. Fai clic su Salva e continua.

Configura e crea l'istanza Cloud SQL di destinazione

  1. Nella pagina Definisci una destinazione, seleziona Nuova istanza dal menu a discesa Tipo di istanza di destinazione. Definisci tutte le impostazioni pertinenti:
    1. Nel campo ID istanza di destinazione, fornisci un identificatore per l'istanza Cloud SQL o utilizza l'identificatore generato automaticamente.

      Non includere informazioni sensibili o che consentono l'identificazione personale nell'identificatore. Non è necessario includere l'ID progetto nel nome dell'istanza. Questa operazione viene eseguita automaticamente, se opportuno (ad esempio, nei file di log).

    2. Nel campo Password, fornisci una password alfanumerica per l'istanza Cloud SQL di destinazione. Questa è la password per l'account amministratore postgres nell'istanza.

      Puoi inserire la password manualmente o fare clic su Genera per consentire a Database Migration Service di crearne una automaticamente.

    3. Dal menu a discesa Versione database, scegli la versione del database per l'istanza di destinazione.

      Scopri di più sul supporto della migrazione tra versioni.

    4. Seleziona la versione di Cloud SQL per PostgreSQL per l'istanza di destinazione. Sono disponibili due opzioni: Cloud SQL per PostgreSQL Enterprise e Cloud SQL per PostgreSQL Enterprise Plus.

      Le versioni di Cloud SQL per PostgreSQL sono dotate di diversi set di funzionalità, tipi di macchine disponibili e prezzi. Assicurati di consultare la documentazione di Cloud SQL per scegliere la versione appropriata per le tue esigenze. Per saperne di più, consulta Introduzione alle versioni di Cloud SQL per PostgreSQL.

    5. Il menu Regione mostra la stessa regione selezionata nella pagina Inizia.

      Se stai configurando l'istanza per l'alta affidabilità, seleziona Più zone (alta affidabilità). Puoi selezionare sia la zona principale sia quella secondaria. Quando la zona secondaria viene utilizzata durante la creazione dell'istanza, si applicano le seguenti condizioni:

      • Le zone predefinite sono Qualsiasi per la zona principale e Qualsiasi (diversa dalla principale) per la zona secondaria.
      • Se vengono specificate sia la zona principale sia quella secondaria, devono essere zone diverse.
    6. Nella sezione Connessioni, scegli se aggiungere un indirizzo IP pubblico o privato per l'istanza di destinazione. Puoi configurare l'istanza in modo che abbia entrambi i tipi di indirizzi IP, ma per la migrazione è richiesto almeno un tipo. Seleziona una delle seguenti opzioni:
      • Se vuoi eseguire la migrazione utilizzando il peering VPC o un tunnel SSH inverso, seleziona IP privato.
        • Per abilitare la connettività con IP privato, assicurati di soddisfare tutti i requisiti di networking aggiuntivi.

          Espandi questa sezione per i requisiti completi degli IP privati.

        • Seleziona la rete VPC associata per il peering. Se prevedi di connetterti all'origine di migrazione utilizzando il peering VPC, scegli il VPC in cui si trova l'istanza.
        • Se non è mai stata configurata una rete di servizi gestiti per il VPC selezionato, puoi scegliere di selezionare un intervallo IP e fare clic su Connetti o utilizzare un intervallo IP selezionato automaticamente e fare clic su Alloca e connetti.
      • Se vuoi eseguire la migrazione su internet utilizzando una lista consentita di IP, seleziona IP pubblico.

        Facoltativamente, in IP pubblico fai clic sul campo Reti autorizzate e autorizza una rete o un proxy a connettersi all'istanza Cloud SQL. Le reti sono autorizzate solo con gli indirizzi che fornisci. Consulta Configura l'IP pubblico nella documentazione di Cloud SQL.

      La connettività del job di migrazione viene configurata in un passaggio successivo. Per scoprire di più sui metodi di networking disponibili, consulta Configura la connettività.

  2. Seleziona il tipo di macchina per l'istanza Cloud SQL. Scopri di più sui tipi di macchine PostgreSQL.
  3. Per Cloud SQL per PostgreSQL Enterprise Plus: seleziona la casella di controllo Abilita cache dei dati se vuoi utilizzare la funzionalità di cache dei dati nel database di destinazione.

    La cache di dati è una funzionalità facoltativa disponibile per le istanze Cloud SQL per PostgreSQL Enterprise Plus che aggiunge un'unità a stato solido locale ad alta velocità al database di destinazione. Questa funzionalità può comportare costi aggiuntivi per Cloud SQL. Per saperne di più sulla cache dei dati, consulta la panoramica della cache dei dati nella documentazione di Cloud SQL.

  4. Specifica il tipo di archiviazione per l'istanza Cloud SQL. Puoi scegliere un'unità a stato solido (SSD) o un hard disk (HDD).
  5. Specifica la capacità di archiviazione (in GB) per l'istanza Cloud SQL.

    Assicurati che l'istanza disponga di spazio di archiviazione sufficiente per gestire i dati del database di origine. Puoi aumentare questa capacità in qualsiasi momento, ma non puoi diminuirla.

  6. (Facoltativo) Configura le opzioni di crittografia dei dati o le etichette delle risorse per l'istanza di destinazione.

    Espandi questa sezione per visualizzare i passaggi facoltativi.

    Fai clic su Mostra configurazioni facoltative, quindi:

    1. Specifica se vuoi gestire la crittografia dei dati di cui viene eseguita la migrazione dall'origine alla destinazione. Per impostazione predefinita, i dati sono criptati con una chiave gestita da Google Cloud. Se vuoi gestire la tua crittografia, puoi utilizzare una chiave di crittografia gestita dal cliente (CMEK). Ecco come fare:

      1. Seleziona la casella di controllo Utilizza una chiave di crittografia gestita dal cliente (CMEK).
      2. Dal menu Seleziona una chiave gestita dal cliente, seleziona la tua CMEK.

      Se non vedi la tua chiave, fai clic su Inserisci il nome risorsa della chiave per fornire il nome risorsa della chiave che vuoi utilizzare. Esempio di nome risorsa della chiave: projects/my-project-name/locations/my-location/keyRings/my-keyring/cryptoKeys/my-key.

    2. Aggiungi eventuali flag necessari da applicare al server di database. Se possibile, assicurati che i flag di database nell'istanza Cloud SQL di destinazione creata siano gli stessi del database di origine. Scopri di più sui flag di database supportati per PostgreSQL.
    3. Aggiungi eventuali etichette specifiche per l'istanza Cloud SQL.

      Le etichette consentono di organizzare le istanze. Ad esempio, puoi organizzare le etichette per centro di costo o ambiente. Le etichette sono incluse anche nella fattura, pertanto puoi vedere come sono distribuiti i costi nelle varie etichette.

  7. Fai clic su Crea destinazione e continua. Database Migration Service sta creando l'istanza Cloud SQL di destinazione. Questa procedura può richiedere alcuni minuti.

Configura la connettività tra le istanze del database di origine e di destinazione

Dal menu a discesa Metodo di connettività, seleziona un metodo di connettività di rete. Questo metodo definisce il modo in cui la nuova istanza Cloud SQL creata si connetterà al database di origine. I metodi di connettività di rete attuali per la migrazione a una nuova istanza includono lista consentita di IP, tunnel SSH inverso e peering VPC.

Se vuoi utilizzare…Devi…
Il metodo di connettività di rete con lista consentita IP, Devi specificare l'indirizzo IP in uscita dell'istanza di destinazione. Se l'istanza Cloud SQL che hai creato è un'istanza ad alta affidabilità, includi gli indirizzi IP in uscita sia per l'istanza principale sia per quella secondaria.
Il metodo di connettività di rete tramite tunnel SSH inverso, Devi selezionare l'istanza VM di Compute Engine che ospiterà il tunnel.

Dopo aver specificato l'istanza, Google fornirà uno script che esegue i passaggi per configurare il tunnel tra i database di origine e di destinazione. Dovrai eseguire lo script in Google Cloud CLI.

Esegui i comandi da una macchina con connettività sia al database di origine sia a Google Cloud.

Il metodo di connettività di rete con peering VPC, Devi selezionare la rete VPC in cui si trova il database di origine. L'istanza Cloud SQL verrà aggiornata per connettersi a questa rete.

Dopo aver selezionato e configurato la connettività di rete, fai clic su Configura e continua.

Configura database di migrazione

Puoi eseguire la migrazione di tutti i database dall'istanza di origine o scegliere solo database specifici. L'istanza di destinazione non può contenere database che condividono il nome con i database scelti per la migrazione. Se Database Migration Service rileva una collisione dei nomi dei database, il database in questione viene eliminato nella destinazione prima della migrazione.

  1. Nell'elenco Database da migrare, seleziona una delle seguenti opzioni:
    • Tutti i database: seleziona tutti i database presenti nell'origine.
    • Database specifici: consente di selezionare database specifici da tutti i database esistenti nell'origine.
  2. Se vuoi eseguire la migrazione di database specifici, puoi filtrare l'elenco visualizzato e selezionare i database di cui vuoi che Database Migration Service esegua la migrazione nella destinazione.

    Se l'elenco non viene visualizzato e viene mostrato un errore di rilevamento del database, fai clic su Ricarica. Se il rilevamento del database non va a buon fine, il job esegue la migrazione di tutti i database. Puoi continuare con la creazione di un job di migrazione e correggere gli errori di connettività in un secondo momento.

  3. Fai clic su Salva e continua.

Testa, crea ed esegui il job di migrazione

In questo passaggio finale, esamina il riepilogo delle impostazioni del job di migrazione, dell'origine, della destinazione e del metodo di connettività, quindi verifica la validità della configurazione del job di migrazione. Se si verificano problemi, puoi modificare le impostazioni del job di migrazione. Non tutte le impostazioni sono modificabili.

  1. Nella pagina Testa e crea un job di migrazione, fai clic su Testa il job.

    Se il test non va a buon fine, puoi risolvere il problema nella parte appropriata del flusso e ripetere il test. Per informazioni sulla risoluzione dei problemi relativi a un test del job di migrazione non riuscito, consulta Diagnostica i problemi per PostgreSQL.

  2. Al termine del test del job di migrazione, fai clic su Crea e avvia job per creare il job di migrazione e avviarlo immediatamente oppure fai clic su Crea job per creare il job di migrazione senza avviarlo immediatamente.

    Se il job non viene avviato al momento della creazione, può essere avviato dalla pagina Job di migrazione facendo clic su AVVIA. Indipendentemente da quando inizia il job di migrazione, alla tua organizzazione viene addebitato il costo per l'esistenza dell'istanza di destinazione.

    La migrazione è in corso. Quando avvii il job di migrazione, Database Migration Service inizia il dump completo iniziale e la replica. Per saperne di più, consulta Limitazioni note.

  3. Vai a Esamina il job di migrazione.

Google Cloud CLI

  1. Crea il profilo di connessione di destinazione.
    Quando esegui la migrazione a una nuova istanza di destinazione con Google Cloud CLI, crei l'istanza di destinazione e il profilo di connessione in un'unica azione.
    Esegui questo comando (fai clic sul link per espandere):

    gcloud database-migration connection-profiles create postgresql

    Questo esempio utilizza il flag facoltativo --no-async in modo che tutte le operazioni vengano eseguite in modo sincrono. Ciò significa che il completamento di alcuni comandi potrebbe richiedere un po' di tempo. Puoi saltare il flag --no-async per eseguire i comandi in modo asincrono. In questo caso, devi utilizzare il comando gcloud database-migration operations describe per verificare se l'operazione è andata a buon fine.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • DEST_CONN_ID con l'identificatore del profilo di connessione di destinazione.
    • REGION con la regione in cui vuoi salvare il profilo di connessione. Questa regione deve essere la stessa dell'istanza di destinazione.
    • DEST_INSTANCE con l'ID dell'istanza Cloud SQL di destinazione creata in precedenza.
    • DEST_USER con il nome utente dell'utente di migrazione nel database di destinazione.
    • DEST_PASSWORD con la password dell'utente per la migrazione nel database di destinazione.

    Esegui questo comando:

    Linux, macOS o Cloud Shell

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
      --region=REGION \
      --cloudsql-instance=DEST_INSTANCE \
      --username=DEST_USER \
      --password=DEST_PASSWORD \
      --role=DESTINATION \
      --no-async

    Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
      --region=REGION `
      --cloudsql-instance=DEST_INSTANCE `
      --username=DEST_USER `
      --password=DEST_PASSWORD `
      --role=DESTINATION `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^
      --region=REGION ^
      --cloudsql-instance=DEST_INSTANCE ^
      --username=DEST_USER ^
      --password=DEST_PASSWORD ^
      --role=DESTINATION ^
      --no-async

    Dovresti ricevere una risposta simile alla seguente:

    Waiting for connection profile [CONNECTION_PROFILE_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
    
  2. Crea il job di migrazione.
    Se utilizzi il peering VPC o una connettività del tunnel SSH inverso, assicurati di aggiungere i flag richiesti, ad esempio --peer-vpc o --vm, --vm-ip, --vm-port, --vpc. Per saperne di più, consulta Configura la connettività ed Esempi di Google Cloud CLI.
    Esegui questo comando (fai clic sul link per espandere):

    gcloud database-migration migration-jobs create

    Questo esempio utilizza il flag facoltativo --no-async in modo che tutte le operazioni vengano eseguite in modo sincrono. Ciò significa che il completamento di alcuni comandi potrebbe richiedere un po' di tempo. Puoi saltare il flag --no-async per eseguire i comandi in modo asincrono. In questo caso, devi utilizzare il comando gcloud database-migration operations describe per verificare se l'operazione è andata a buon fine.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • MIGRATION_JOB_ID con un identificatore leggibile da macchina per il job di migrazione. Utilizza questo valore per lavorare con i job di migrazione utilizzando i comandi o l'API di Google Cloud CLI di Database Migration Service.
    • REGION con l'identificatore della regione in cui vuoi salvare il job di migrazione.
    • MIGRATION_JOB_NAME con un nome leggibile per il job di migrazione. Questo valore viene visualizzato in Database Migration Service nella console Google Cloud .
    • SOURCE_CONNECTION_PROFILE_ID con un identificatore leggibile da macchina del profilo di connessione di origine. Per saperne di più, consulta Crea un profilo di connessione di origine.
    • DESTINATION_CONNECTION_PROFILE_ID con un identificatore leggibile da macchina del profilo di connessione di destinazione.
    • (Facoltativo) Per impostazione predefinita, Database Migration Service esegue la migrazione di tutti i database nell'origine. Se vuoi eseguire la migrazione solo di database specifici, utilizza il flag --databases-filter e specifica i relativi identificatori come elenco separato da virgole.

      Ad esempio: --databases-filter=my-business-database,my-other-database

      In un secondo momento, puoi modificare i job di migrazione creati con il flag --databases-filter utilizzando il comando gcloud database-migration migration-jobs update.

    Esegui questo comando:

    Linux, macOS o Cloud Shell

    gcloud database-migration migration-jobs \
    create MIGRATION_JOB_ID \
      --no-async \
      --region=REGION \
      --display-name=MIGRATION_JOB_NAME \
      --source=SOURCE_CONNECTION_PROFILE_ID \
      --destination=DESTINATION_CONNECTION_PROFILE_ID \
      --type=CONTINUOUS

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    create MIGRATION_JOB_ID `
      --no-async `
      --region=REGION `
      --display-name=MIGRATION_JOB_NAME `
      --source=SOURCE_CONNECTION_PROFILE_ID `
      --destination=DESTINATION_CONNECTION_PROFILE_ID `
      --type=CONTINUOUS

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    create MIGRATION_JOB_ID ^
      --no-async ^
      --region=REGION ^
      --display-name=MIGRATION_JOB_NAME ^
      --source=SOURCE_CONNECTION_PROFILE_ID ^
      --destination=DESTINATION_CONNECTION_PROFILE_ID ^
      --type=CONTINUOUS

    Dovresti ricevere una risposta simile alla seguente:

    Waiting for migration job [MIGRATION_JOB_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created migration job MIGRATION_JOB_ID [OPERATION_ID]