Utilizzare le migrazioni rapide con Database Migration Service

Questa pagina descrive come eseguire migrazioni rapide per migrazioni PostgreSQL omogenee a Cloud SQL per PostgreSQL.

Panoramica

Le migrazioni rapide sono un flusso di migrazione continua leggero per scenari PostgreSQL omogenei. Con le migrazioni rapide, Database Migration Service può configurare automaticamente tutto ciò che ti serve per eseguire la migrazione dei database: componenti di rete (collegamenti di rete, subnet, configurazioni di connettività privata), profili di connessione e job di migrazione.

Con le migrazioni rapide, puoi spostare i dati in un'istanza Cloud SQL per PostgreSQL esistente o crearne una nuova durante la configurazione della migrazione. Le migrazioni rapide sono più adatte a:

  • Migrazioni di base, in cui non è necessario un controllo preciso sulle impostazioni di parallelismo del dump dei dati.
  • Migrazione del database da un progetto Google Cloud all'altro. Quando configuri una migrazione rapida, puoi creare l'istanza di destinazione in un progetto diverso da quello di origine e impostare Database Migration Service in modo che crei il collegamento di rete e la subnet nella rete Virtual Private Cloud (VPC) di un altro progetto.
  • Migrazione da origini con un indirizzo IP privato nella tua rete Virtual Private Cloud (VPC), come database autogestiti su Compute Engine o istanze Cloud SQL per PostgreSQL abilitate per il networking privato. Google Cloud

    Le origini ospitate all'esterno Google Cloud potrebbero richiedere componenti di rete aggiuntivi (ad esempio una connessione Cloud VPN) per poter essere raggiunte a un indirizzo IP privato all'interno della rete VPC.

  • L'unico metodo supportato per la connettività del database è Private Service Connect con le configurazioni di connettività privata di Database Migration Service. Al database di origine deve essere assegnato un IP privato nella rete VPC. Altri metodi di connettività di origine omogenei (come liste consentite di IP pubblici, tunnel SSH inversi o peering VPC) non sono supportati per le migrazioni rapide.

Per saperne di più sulle migrazioni rapide, consulta la sezione Migrazioni rapide nella documentazione di Database Migration Service.

Prima di iniziare

  1. Verifica se le migrazioni rapide possono supportare completamente il tuo scenario. Consulta Limitazioni della migrazione rapida nella documentazione di Database Migration Service.
  2. Accedi al tuo Account Google.

    Se non ne hai già uno, registrati per creare un nuovo account.

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Abilita le API Database Migration Service, Compute Engine, Network Connectivity Center e Cloud SQL Admin.

    Abilita le API

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire migrazioni rapide a Cloud SQL per PostgreSQL con Database Migration Service, chiedi all'amministratore di concedere i ruoli Identity and Access Management (IAM) richiesti per gli account coinvolti nella migrazione nei progetti pertinenti. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso nella documentazione di IAM.

Ruoli e autorizzazioni nel progetto di origine

Concedi i seguenti ruoli ad account specifici nel progetto Google Cloud in cui risiede il database origine:

  • Per l'account utente che esegue la migrazione: Compute Network Admin (roles/compute.networkAdmin)
  • Per il account di servizio Database Migration Service del progetto di destinazione: Compute Network Viewer(roles/compute.networkViewer)

    L'account di servizio Database Migration Service viene creato quando abiliti l'API Database Migration Service. L'indirizzo email associato a questo account viene generato automaticamente e non può essere modificato. Questo indirizzo email utilizza il seguente formato:

    service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.iam.gserviceaccount.com

Questi ruoli predefiniti contengono le autorizzazioni necessarie per configurare la connettività nel progetto di database di origine nell'ambito di una migrazione rapida con Database Migration Service. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie (origine):

Autorizzazioni richieste (origine)

Per eseguire migrazioni di avvio rapido omogenee con Database Migration Service sono necessarie le seguenti autorizzazioni:

Per l'account utente che esegue la migrazione:

  • compute.networks.*
  • compute.subnetworks.*
  • compute.networkAttachments.*

Per il account di servizio Database Migration Service del progetto di destinazione: compute.networkAttachments.get.

Ruoli e autorizzazioni nel progetto di destinazione

Concedi i seguenti ruoli all'account utente che esegue la migrazione nel progetto Google Cloud in cui si trova il database di destinazione:

Questi ruoli predefiniti contengono le autorizzazioni necessarie per configurare i componenti di migrazione richiesti nel progetto di database di destinazione nell'ambito di una migrazione rapida con Database Migration Service. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie (destinazione):

Autorizzazioni obbligatorie (destinazione)

Per eseguire migrazioni di avvio rapido omogenee con Database Migration Service sono necessarie le seguenti autorizzazioni:

  • datamigration.*
  • cloudsql.instances.create
  • cloudsql.instances.delete
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.instances.update
  • cloudsql.instances.connect
  • cloudsql.instances.executeSql
  • cloudsql.instances.export
  • cloudsql.instances.import
  • cloudsql.instances.login
  • cloudsql.operations.get
  • cloudsql.users.get
  • cloudsql.users.list
  • cloudsql.users.create
  • cloudsql.users.update
  • cloudsql.users.delete

Configurazione del database di origine

Per configurare il database PostgreSQL di origine:

  1. Crea un account utente dedicato per la migrazione nell'istanza.
    • Per le origini Cloud SQL per PostgreSQL, consulta Crea un utente nella documentazione di Cloud SQL per PostgreSQL.
    • Per altre origini, consulta la documentazione del fornitore del database o crea e gestisci gli utenti nella documentazione di PostgreSQL.
  2. Assegna i privilegi necessari all'account utente dedicato per la migrazione. Esegui i seguenti comandi per ogni database di cui vuoi eseguire la migrazione:
    -- Grant the REPLICATION attribute
    ALTER ROLE MIGRATION_USER REPLICATION;
    
    -- Grant database-level permissions.
    -- Repeat for each database you want to migrate.
    GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER;
    
    -- Grant schema-level usage.
    -- Repeat for each schema in each database you want to migrate.
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;

    Sostituisci quanto segue:

    • MIGRATION_USER con il nome dell'account utente di migrazione.
    • DATABASE_NAME con il nome del database di cui vuoi eseguire la migrazione.
    • SCHEMA_NAME con il nome dello schema nel database di cui vuoi eseguire la migrazione.
  3. L'account utente di migrazione deve disporre dell'accesso di proprietà alle tabelle di cui esegui la migrazione. Per concedere questo livello di accesso, procedi in uno dei seguenti modi:
    • Assegna il ruolo PostgreSQL SUPERUSER all'account di migrazione.
      • Per le origini Cloud SQL per PostgreSQL, assegna il ruolo cloudsqlsuperuser.
      • Per altre origini, assegna il SUPERUSER ruolo o consulta la documentazione del fornitore del database per un insieme equivalente di autorizzazioni.
    • Aggiungi l'account utente di migrazione al gruppo di utenti proprietario delle tabelle. Esegui questo comando:
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      Sostituisci quanto segue:

      • TABLE_OWNER_GROUP_NAME con il nome del gruppo di utenti proprietario di ogni tabella di cui vuoi eseguire la migrazione.
      • MIGRATION_USER con il nome dell'account utente di migrazione.
  4. Per le tabelle senza chiavi primarie: Database Migration Service non replica le operazioni UPDATE o DELETE per le tabelle senza chiavi primarie durante la fase Change Data Capture (CDC). Se vuoi includere queste operazioni nella replica, modifica le tabelle senza chiavi primarie con REPLICA IDENTITY:
    ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL;
    ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;

    Sostituisci quanto segue:

    • TABLE_NAME è il nome della tabella che non ha chiavi primarie.
    • INDEX_NAME è l'indice univoco che può monitorare le righe delle tabelle senza chiavi primarie.
  5. Configura le impostazioni di replica utilizzando i flag di database.

    Origini autogestite

    Il salvataggio delle modifiche ai flag del database richiede il riavvio completo del database. Gli esempi riportati di seguito utilizzano query SQL per modificare i valori dei flag. Se non riesci a eseguire query SQL direttamente, consulta la documentazione del provider per i passaggi relativi alla modifica di questi flag.

    1. Imposta il parametro wal_level su logical. Esegui questo comando:
      ALTER SYSTEM SET wal_level = 'logical';
    2. Imposta il parametro wal_sender_timeout su 0. Questo valore disabilita il meccanismo di timeout utilizzato per terminare le connessioni di replica inattive. Esegui questo comando:
      ALTER SYSTEM SET wal_sender_timeout = 0;
          
    3. Configura il numero massimo di slot di replica con il parametro max_replication_slots. Questo parametro deve essere impostato almeno sul numero di database che stai migrando per job di migrazione, più alcune riserve per la sincronizzazione delle tabelle.

      Ad esempio, se esegui la migrazione di 5 database e sono stati creati 2 job di migrazione per l'istanza di origine, il numero di slot di replica deve essere almeno 5 * 2 = 10, più il numero di slot di replica già utilizzati.

      Per impostare questo parametro, esegui il comando seguente:

      ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
          
      dove NUMBER_OF_SLOTS rappresenta il numero massimo di slot di replica.
    4. Configura il parametro max_wal_senders in modo che abbia almeno lo stesso valore di max_replication_slots, più il numero di mittenti già utilizzati nella tua istanza.

      Ad esempio, se il parametro max_replication_slots è impostato su 10 e stai già utilizzando due mittenti, il numero di processi del mittente WAL in esecuzione contemporaneamente sarà 10 + 2 = 12.

      Per impostare questo parametro, esegui il comando seguente:

      ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
          
      Dove NUMBER_OF_SENDERS rappresenta il numero di processi del mittente WAL in esecuzione contemporaneamente.
    5. Imposta max_worker_processes almeno al numero di database che vuoi migrare, più il numero di max_worker_processes già utilizzati nella tua istanza. Per impostare questo parametro, esegui il comando seguente:
      ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
          
      Dove NUMBER_OF_PROCESSES rappresenta il numero di database di cui verrà eseguita la migrazione.

    Origini Cloud SQL per PostgreSQL

    Per le origini Cloud SQL, configura i flag di database nella Google Cloud console. Per applicare l'impostazione, devi riavviare l'istanza dopo aver modificato i flag del database. Per saperne di più sull'impostazione dei flag di database in Cloud SQL, consulta Configurare i flag di database nella documentazione di Cloud SQL.

    1. Imposta il flag cloudsql.logical_decoding su on.
    2. Imposta il parametro wal_sender_timeout su 0. Questo valore disabilita il meccanismo di timeout utilizzato per terminare le connessioni di replica inattive.
    3. Configura il numero massimo di slot di replica con il parametro max_replication_slots. Questo parametro deve essere impostato almeno sul numero di database che stai migrando per job di migrazione, più alcune riserve per la sincronizzazione delle tabelle.

      Ad esempio, se esegui la migrazione di 5 database e sono stati creati 2 job di migrazione per l'istanza di origine, il numero di slot di replica deve essere almeno 5 * 2 = 10, più il numero di slot di replica già utilizzati.

    4. Configura il parametro max_wal_senders in modo che abbia almeno lo stesso valore di max_replication_slots, più il numero di mittenti già utilizzati nella tua istanza.

      Ad esempio, se il parametro max_replication_slots è impostato su 10 e stai già utilizzando due mittenti, il numero di processi del mittente WAL in esecuzione contemporaneamente sarà 10 + 2 = 12.

    5. Imposta max_worker_processes almeno sul numero di database che vuoi migrare, più il numero di max_worker_processes già utilizzati nella tua istanza.

Crea ed esegui una migrazione rapida

Quando utilizzi le migrazioni rapide, puoi creare una nuova istanza Cloud SQL ed eseguire la migrazione dei database oppure eseguire la migrazione dei database a un'istanza già esistente.

Migrazioni rapide per nuove istanze

Per creare una nuova istanza Cloud SQL per PostgreSQL ed eseguire immediatamente la migrazione dei database, segui questi passaggi:

  1. Vai alla pagina Istanze.

    Vai a Istanze

  2. Fai clic su Crea istanza > Da un database esistente.
  3. Nella finestra Esegui la migrazione del database esistente, seleziona Migrazione rapida di PostgreSQL e fai clic su Continua.

    Si apre il modulo di migrazione rapida di Database Migration Service.

  4. Nella sezione Configura migrazione, segui questi passaggi:
    1. Dal menu Regione di destinazione, seleziona la regione dell'istanza Cloud SQL per PostgreSQL di destinazione.
    2. Nella casella Prefisso di migrazione, inserisci una stringa facile da ricordare che verrà aggiunta ai nomi di tutte le entità di migrazione create per la migrazione rapida: profili di connessione, configurazione della connettività privata, collegamento di rete e relativa subnet e job di migrazione.
    3. Dal menu Tipo di configurazione, seleziona una delle seguenti opzioni:
      1. Configurazione della connettività esistente: seleziona questa opzione se hai già un collegamento di rete e una configurazione di connettività privata che utilizza il metodo delle interfacce Private Service Connect. Questa opzione è ideale se hai utilizzato in precedenza le migrazioni rapide e vuoi riutilizzare le stesse risorse di rete.
      2. Nuova configurazione di connettività: seleziona questa opzione per creare un nuovo collegamento di rete e la subnet del collegamento di rete nella rete VPC del database di origine. La configurazione di connettività privata verrà creata nello stesso progetto dell'istanza di destinazione.
    4. Fai clic su Continua.
  5. Nella sezione Collega origine, segui questi passaggi:
    1. Inserisci un nome host o l'indirizzo IP privato del tuo database di origine. L'indirizzo del database di origine deve essere raggiungibile dalla rete VPC di origine.
    2. Inserisci la porta utilizzata per accedere all'host. La porta PostgreSQL predefinita è 5432.
    3. Inserisci il nome utente e la password dell'account di migrazione dedicato nel database di origine.
    4. Dal menu Tipo di crittografia, seleziona una delle seguenti opzioni:
      • Nessuno: se il database di origine non richiede connessioni criptate con SSL/TLS.
      • Obbligatorio: se il database di origine richiede connessioni criptate con SSL/TLS. Questa opzione non richiede alcuna verifica del certificato.
    5. Nel menu Database da migrare, fai clic su Personalizza. Utilizza il riquadro laterale per selezionare solo i database di cui vuoi eseguire la migrazione a Cloud SQL per PostgreSQL.
    6. Fai clic su Continua.
  6. Nella sezione Configura destinazione, segui questi passaggi:
    1. Nel menu Tipo di istanza di destinazione, seleziona Nuova istanza.

      Database Migration Service utilizza la configurazione predefinita di Cloud SQL per PostgreSQL per una nuova istanza. Fai clic su Personalizza per modificare le funzionalità dell'istanza, come il tipo di macchina, la disponibilità zonale o le impostazioni di protezione dei dati. Per saperne di più sulla configurazione delle istanze, consulta Crea istanze.

    2. Nel campo Password, inserisci una password per l'amministratore predefinito postgresql. Database Migration Service si connette come questo utente per eseguire la migrazione dei dati.
  7. Fai clic su Avvia migrazione.

    Database Migration Service ora crea il job di migrazione e avvia il processo di migrazione. Puoi monitorare l'avanzamento della migrazione nei dettagli del job di migrazione di Database Migration Service. Per ulteriori informazioni, consulta la sezione Gestire i job di migrazione nella documentazione di Database Migration Service.

Migrazioni rapide per le istanze esistenti

Per eseguire la migrazione dei database a un'istanza Cloud SQL esistente, segui questi passaggi:

  1. Vai alla pagina Istanze.

    Vai a Istanze

  2. Seleziona l'istanza Cloud SQL in cui vuoi eseguire la migrazione dei database.
  3. Nella pagina dei dettagli dell'istanza, fai clic su Migra database.

    Si apre il modulo di migrazione rapida di Database Migration Service.

  4. Nella sezione Configura migrazione, segui questi passaggi:
    1. Dal menu Regione di destinazione, seleziona la regione dell'istanza Cloud SQL per PostgreSQL di destinazione.
    2. Nella casella Prefisso di migrazione, inserisci una stringa facile da ricordare che verrà aggiunta ai nomi di tutte le entità di migrazione create per la migrazione rapida: profili di connessione, configurazione della connettività privata, collegamento di rete e relativa subnet e job di migrazione.
    3. Dal menu Tipo di configurazione, seleziona una delle seguenti opzioni:
      1. Configurazione di connettività esistente: seleziona questa opzione se hai già un collegamento di rete e una configurazione di connettività privata che utilizza interfacce Private Service Connect nella rete VPC del database di origine. Questa opzione è ideale se hai utilizzato in precedenza le migrazioni rapide e vuoi riutilizzare le stesse risorse di rete.
      2. Nuova configurazione di connettività: seleziona questa opzione per creare un nuovo collegamento di rete, una subnet di collegamento di rete e una configurazione di connettività privata nella rete VPC del database di origine.
    4. Fai clic su Continua.
  5. Nella sezione Collega origine, segui questi passaggi:
    1. Inserisci un nome host o l'indirizzo IP privato del tuo database di origine. L'indirizzo del database di origine deve essere raggiungibile dalla rete VPC di origine.
    2. Inserisci la porta utilizzata per accedere all'host. La porta PostgreSQL predefinita è 5432.
    3. Inserisci il nome utente e la password dell'account di migrazione dedicato nel database di origine.
    4. Dal menu Tipo di crittografia, seleziona una delle seguenti opzioni:
      • Nessuno: se il database di origine non richiede connessioni criptate con SSL/TLS.
      • Obbligatorio: se il database di origine richiede connessioni criptate con SSL/TLS. Questa opzione non richiede alcuna verifica del certificato.
    5. Nel menu Database da migrare, fai clic su Personalizza. Utilizza il riquadro laterale per selezionare solo i database di cui vuoi eseguire la migrazione a Cloud SQL per PostgreSQL.
  6. Fai clic su Avvia migrazione.

    Database Migration Service ora crea il job di migrazione e avvia il processo di migrazione. Puoi monitorare l'avanzamento della migrazione nei dettagli del job di migrazione di Database Migration Service. Per ulteriori informazioni, consulta la sezione Gestire i job di migrazione nella documentazione di Database Migration Service.

Finalizzare la migrazione

Quando decidi di passare alla nuova istanza Cloud SQL, finalizza la migrazione seguendo questi passaggi:

  1. Interrompi tutte le operazioni di scrittura sul database di origine. Puoi passare alla modalità di sola lettura per mantenere la funzionalità operativa.
  2. Promuovi il job di migrazione.
  3. (Facoltativo) Verifica i dati di migrazione per verificarne la completezza.

Passaggi successivi