Migrer vers AlloyDB pour PostgreSQL à l'aide des migrations à démarrage rapide


Cette page explique comment effectuer des migrations continues à démarrage rapide pour les migrations PostgreSQL homogènes vers AlloyDB pour PostgreSQL.

Présentation

Les migrations à démarrage rapide sont un flux de migration continu et léger pour les scénarios PostgreSQL homogènes. Avec les migrations à démarrage rapide, Database Migration Service peut configurer automatiquement les ressources de mise en réseau et de migration de base dont vous avez besoin : rattachements de réseau, sous-réseaux, configurations de connectivité privée avec des interfaces Private Service Connect, profils de connexion et jobs de migration continue.

Avec les migrations par démarrage rapide, vous pouvez déplacer vos données vers un cluster AlloyDB pour PostgreSQL existant ou en créer un lors de la configuration de la migration. Les migrations à démarrage rapide sont particulièrement adaptées aux cas suivants :

  • Migrations de base pour lesquelles vous n'avez pas besoin de paramètres de parallélisme de vidage des données personnalisés.
  • Migrer votre base de données d'un projet Google Cloud vers un autre. Lorsque vous configurez une migration rapide, vous pouvez créer votre cluster de destination dans un projet différent de votre source et configurer Database Migration Service pour créer le rattachement de réseau et le sous-réseau dans le réseau cloud privé virtuel (VPC) d'un autre projet.
  • Migrer à partir de sources disposant d'une adresse IP privée dans votre réseau de cloud privé virtuel (VPC) Google Cloud, telles que des bases de données autogérées sur Compute Engine ou des instances Cloud SQL pour PostgreSQL activées pour la mise en réseau privée.

    Les sources hébergées en dehors de Google Cloud peuvent nécessiter des composants réseau supplémentaires (comme une connexion Cloud VPN) pour être accessibles à une adresse IP privée de votre réseau VPC.

  • Les migrations à démarrage rapide sont compatibles avec la connectivité des interfaces d'adresse IP publique et de Private Service Connect. Les tunnels SSH inversés ne sont pas compatibles avec les migrations automatisées.

Pour en savoir plus sur les migrations à démarrage rapide, consultez la présentation des migrations à démarrage rapide dans la documentation principale de Database Migration Service.

Avant de commencer

  1. Vérifiez si les migrations à démarrage rapide sont entièrement compatibles avec votre scénario. Consultez Limites de la migration à démarrage rapide.
  2. Dans la console Google Cloud , sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud .

    Accéder au sélecteur de projet

  3. Activez les API Database Migration Service, Compute Engine, Network Connectivity Center et AlloyDB pour PostgreSQL.

    Activer les API

Rôles requis

Pour obtenir les autorisations nécessaires pour exécuter des migrations de démarrage rapide vers AlloyDB pour PostgreSQL avec Database Migration Service, demandez à votre administrateur d'accorder les rôles IAM (Identity and Access Management) requis pour les comptes impliqués dans la migration dans les projets concernés. Pour en savoir plus sur l'attribution de rôles, consultez Gérer les accès dans la documentation IAM.

Rôles et autorisations dans le projet source

Si vous utilisez la connectivité IP privée pour vous connecter à une base de données source dans un projetGoogle Cloud , attribuez les rôles suivants à des comptes spécifiques sur le projet où réside votre base de données source :

  • Pour le compte utilisateur qui effectue la migration :
  • Pour le compte de service Database Migration Service du projet de destination : Lecteur de réseau Compute (roles/compute.networkViewer)

    Le compte de service Database Migration Service est créé lorsque vous activez l'API Database Migration Service. L'adresse e-mail associée à ce compte est générée automatiquement et ne peut pas être modifiée. Cette adresse e-mail utilise le format suivant :

    service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.

Ces rôles prédéfinis contiennent les autorisations requises pour configurer la connectivité sur votre projet de base de données source dans le cadre d'une migration de démarrage rapide avec Database Migration Service. Pour afficher les autorisations exactes requises, développez la section Autorisations requises (source) :

Autorisations requises (source)

Les autorisations suivantes sont requises pour effectuer des migrations homogènes de démarrage rapide avec Database Migration Service :

Pour le compte utilisateur qui effectue la migration :

  • compute.networks.get
  • compute.networks.list
  • compute.networks.updatePolicy
  • compute.subnetworks.get
  • compute.subnetworks.list
  • compute.subnetworks.create
  • compute.subnetworks.use
  • compute.networkAttachments.create
  • compute.networkAttachments.get
  • compute.networkAttachments.list
  • compute.networkAttachments.update
  • compute.networkAttachments.use
  • compute.regionOperations.get
  • networkconnectivity.internalRanges.create
  • networkconnectivity.internalRanges.get
  • networkconnectivity.operations.get
  • resourcemanager.projects.getIamPolicy

Pour le compte de service Database Migration Service du projet de destination :

  • compute.networkAttachments.get

Rôles et autorisations dans le projet de destination

Attribuez les rôles suivants au compte utilisateur qui effectue la migration sur le projet Google Cloud où réside votre base de données de destination :

De plus, le compte de service Database Migration Service du projet de destination (service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.) nécessite le rôle Agent Database Migration Service (roles/datamigration.serviceAgent) sur le projet de destination. Google Cloud attribue automatiquement ce rôle lorsque vous activez l'API Database Migration Service.

Ces rôles prédéfinis contiennent les autorisations requises pour configurer les composants de migration nécessaires sur votre projet de base de données de destination dans le cadre d'une migration rapide avec Database Migration Service. Pour afficher les autorisations exactes requises, développez la section Autorisations requises (destination) :

Autorisations requises (destination)

Les autorisations suivantes sont requises pour effectuer des migrations homogènes de démarrage rapide avec Database Migration Service :

Pour le compte utilisateur qui effectue la migration :

  • datamigration.privateconnections.get
  • datamigration.privateconnections.list
  • datamigration.privateconnections.create
  • datamigration.migrationjobs.create
  • datamigration.migrationjobs.update
  • datamigration.migrationjobs.verify
  • datamigration.migrationjobs.start
  • datamigration.migrationjobs.get
  • datamigration.migrationjobs.fetchSourceObjects
  • datamigration.operations.get
  • datamigration.connectionprofiles.create
  • datamigration.connectionprofiles.get
  • datamigration.connectionprofiles.update
  • datamigration.locations.list
  • datamigration.locations.fetchStaticIps
  • alloydb.clusters.create
  • alloydb.clusters.get
  • alloydb.clusters.list
  • alloydb.clusters.update
  • alloydb.clusters.delete
  • alloydb.instances.create
  • alloydb.instances.get
  • alloydb.instances.list
  • alloydb.instances.update
  • alloydb.instances.delete
  • alloydb.operations.get
  • alloydb.users.list
  • alloydb.users.get
  • alloydb.users.create
  • alloydb.users.update
  • alloydb.users.delete
  • resourcemanager.projects.getIamPolicy

Pour le compte de service Database Migration Service du projet de destination :

  • alloydb.clusters.import
  • alloydb.instances.connect
  • alloydb.instances.executeSql

Configurer votre base de données source

Pour configurer votre base de données PostgreSQL source, procédez comme suit :

  1. Créez un compte utilisateur dédié à la migration dans votre instance.
  2. Attribuez les droits nécessaires au compte utilisateur dédié à la migration. Exécutez les commandes suivantes pour chaque base de données que vous souhaitez migrer :
    -- 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;

    Remplacez les éléments suivants :

    • MIGRATION_USER par le nom du compte utilisateur de migration.
    • DATABASE_NAME par le nom de la base de données que vous souhaitez migrer.
    • SCHEMA_NAME par le nom du schéma de la base de données que vous souhaitez migrer.
  3. Le compte utilisateur de migration doit disposer d'un accès propriétaire aux tables que vous migrez. Pour accorder ce niveau d'accès, effectuez l'une des opérations suivantes :
    • Pour les sources autres que Cloud SQL pour PostgreSQL uniquement : attribuez le rôle PostgreSQL SUPERUSER au compte de migration.
    • Pour toutes les sources : ajoutez le compte utilisateur de migration au groupe d'utilisateurs propriétaire des tables. Exécutez la commande suivante :
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      Remplacez les éléments suivants :

      • TABLE_OWNER_GROUP_NAME par le nom du groupe d'utilisateurs propriétaire de chaque table que vous souhaitez migrer.
      • MIGRATION_USER par le nom du compte utilisateur de migration.
  4. Pour les tables sans clé primaire : Database Migration Service ne réplique pas les opérations UPDATE ou DELETE pour les tables sans clé primaire pendant la phase de capture de données modifiées (CDC). Si vous souhaitez inclure ces opérations dans votre réplication, modifiez les tables sans clé primaire avec REPLICA IDENTITY :
    ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL;
    ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;

    Remplacez les éléments suivants :

    • TABLE_NAME est le nom de la table qui ne comporte pas de clés primaires.
    • INDEX_NAME est l'index unique qui peut suivre les lignes des tables sans clé primaire.
  5. Configurez les paramètres de réplication à l'aide d'indicateurs de base de données.

    Sources autogérées

    L'enregistrement des modifications apportées aux indicateurs de base de données nécessite un redémarrage complet de la base de données. Les exemples suivants utilisent des requêtes SQL pour modifier les valeurs des options. Si vous ne pouvez pas exécuter de requêtes SQL directement, consultez la documentation de votre fournisseur pour savoir comment modifier ces options.

    1. Définissez le paramètre wal_level sur logical. Exécutez la commande suivante :
      ALTER SYSTEM SET wal_level = 'logical';
    2. Définissez le paramètre wal_sender_timeout sur 0. Cette valeur désactive le mécanisme de délai avant expiration utilisé pour interrompre les connexions de réplication inactives. Exécutez la commande suivante :
      ALTER SYSTEM SET wal_sender_timeout = 0;
    3. Configurez le nombre maximal d'emplacements de réplication avec le paramètre max_replication_slots. Ce paramètre doit être défini sur au moins le nombre de bases de données que vous migrez par job de migration, plus certaines réserves pour la synchronisation des tables.

      Par exemple, si vous migrez cinq bases de données et que deux jobs de migration sont créés pour l'instance source, le nombre d'emplacements de réplication doit être d'au moins 5 * 2 = 10, plus le nombre d'emplacements de réplication que vous utilisez déjà.

      Pour définir ce paramètre, exécutez la commande suivante :

      ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
      Où NUMBER_OF_SLOTS représente le nombre maximal d'emplacements de réplication.
    4. Configurez le paramètre max_wal_senders sur une valeur au moins égale à celle de max_replication_slots, plus le nombre d'expéditeurs déjà utilisés sur votre instance.

      Par exemple, si le paramètre max_replication_slots est défini sur 10 et que vous utilisez déjà deux expéditeurs, le nombre de processus d'envoi WAL exécutés en même temps est de 10 + 2 = 12.

      Pour définir ce paramètre, exécutez la commande suivante :

      ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
      Où NUMBER_OF_SENDERS représente le nombre de processus d'envoi WAL exécutés simultanément.
    5. Définissez max_worker_processes sur une valeur au moins égale au nombre de bases de données que vous souhaitez migrer, plus le nombre de max_worker_processes déjà utilisés sur votre instance. Pour définir ce paramètre, exécutez la commande suivante :
      ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
      Où NUMBER_OF_PROCESSES représente le nombre de bases de données qui seront migrées.

    Sources Cloud SQL pour PostgreSQL

    Pour les sources Cloud SQL, vous configurez les indicateurs de base de données dans la console Google Cloud . Vous devez redémarrer votre instance après avoir modifié les indicateurs de base de données pour que le paramètre soit pris en compte. Pour en savoir plus sur la définition des indicateurs de base de données dans Cloud SQL, consultez Configurer des indicateurs de base de données dans la documentation Cloud SQL.

    1. Définissez le flag cloudsql.logical_decoding sur on. L'activation de cette option nécessite le redémarrage de l'instance pour que le paramètre soit pris en compte.
    2. Définissez le paramètre wal_sender_timeout sur 0. Cette valeur désactive le mécanisme de délai avant expiration utilisé pour interrompre les connexions de réplication inactives.
    3. Configurez le nombre maximal d'emplacements de réplication avec le paramètre max_replication_slots. Ce paramètre doit être défini sur au moins le nombre de bases de données que vous migrez par job de migration, plus certaines réserves pour la synchronisation des tables.

      Par exemple, si vous migrez cinq bases de données et que deux jobs de migration sont créés pour l'instance source, le nombre d'emplacements de réplication doit être d'au moins 5 * 2 = 10, plus le nombre d'emplacements de réplication que vous utilisez déjà.

    4. Configurez le paramètre max_wal_senders sur une valeur au moins égale à celle de max_replication_slots, plus le nombre d'expéditeurs déjà utilisés sur votre instance.

      Par exemple, si le paramètre max_replication_slots est défini sur 10 et que vous utilisez déjà deux expéditeurs, le nombre de processus d'envoi WAL exécutés en même temps est de 10 + 2 = 12.

    5. Définissez le paramètre max_worker_processes sur une valeur au moins égale au nombre de bases de données que vous souhaitez migrer, plus le nombre de max_worker_processes déjà utilisés sur votre instance.

Créer et exécuter une migration automatisée

Pour créer et exécuter une migration rapide, vous pouvez utiliser la console Google Cloud ou la gcloud CLI.

Console

  1. Dans la console Google Cloud , accédez à la page Premiers pas.

    Accéder à la page "Premiers pas"

  2. Dans le menu Moteur source, sélectionnez PostgreSQL.
  3. Dans le menu Moteur de destination, sélectionnez AlloyDB pour PostgreSQL.

    La section Découvrez la migration PostgreSQL à démarrage rapide s'affiche.

  4. Dans la section Découvrez la migration PostgreSQL à démarrage rapide, cliquez sur Lancer la migration.

    La page Migrer vers AlloyDB pour PostgreSQL s'ouvre.

  5. Dans la section Configurer la migration, procédez comme suit :
    1. Dans le menu Région de destination, sélectionnez la région de votre cluster AlloyDB pour PostgreSQL de destination.
    2. Dans le champ Préfixe de migration, saisissez une chaîne lisible qui sera ajoutée aux noms de toutes les entités de migration créées pour la migration à démarrage rapide : profils de connexion, configuration de connectivité privée, rattachement de réseau et son sous-réseau, et job de migration.
    3. Dans le menu Type de connectivité, sélectionnez la manière dont Database Migration Service se connecte à votre base de données source :
      • Adresse IP privée : connectez-vous via un réseau privé à l'aide d'interfaces Private Service Connect. Dans le menu Type de configuration, sélectionnez l'une des options suivantes :
        • Configuration de connectivité existante : sélectionnez cette option si vous disposez déjà d'un rattachement de réseau et d'une configuration de connectivité privée qui utilise la méthode des interfaces Private Service Connect. Cette option est idéale si vous avez déjà utilisé des migrations de démarrage rapide et que vous souhaitez réutiliser les mêmes ressources réseau.
        • Nouvelle configuration de connectivité : sélectionnez cette option pour créer un rattachement de réseau et le sous-réseau de rattachement de réseau dans le réseau VPC de la base de données source. La configuration de connectivité privée sera créée dans le même projet que votre cluster de destination.
      • Adresse IP publique : connectez-vous via l'Internet public à l'aide d'une adresse IP publique statique sortante dédiée. Si une configuration de connectivité IP publique existe déjà dans votre projet et votre région de destination, Database Migration Service la réutilise. Sinon, Database Migration Service crée une configuration de connectivité IP publique et génère une adresse IP sortante lorsque vous continuez.
    4. Cliquez sur Continuer. Si vous êtes invité à confirmer la création de ressources réseau, cliquez sur Configurer et continuer.
  6. Dans la section Connecter la source, procédez comme suit :
    1. Si vous avez sélectionné Adresse IP publique à l'étape précédente, copiez l'adresse IP sortante affichée dans la console Google Cloud et ajoutez-la en tant que règle de pare-feu entrante ou entrée de liste d'autorisation d'adresses IP sur votre réseau source (tel que pg_hba.conf ou les groupes de sécurité du fournisseur de services cloud) pour permettre à Database Migration Service de se connecter.
    2. Saisissez un nom d'hôte ou l'adresse IP de votre base de données source. Si vous avez sélectionné Adresse IP privée, saisissez l'adresse IP privée accessible depuis votre réseau VPC source. Si vous avez sélectionné Adresse IP publique, saisissez l'adresse IP publique de votre base de données source.
    3. Saisissez le port utilisé pour accéder à l'hôte. Le port PostgreSQL par défaut est 5432.
    4. Saisissez le nom d'utilisateur et le mot de passe du compte de migration dédié dans votre base de données source.
    5. Dans le menu Type de chiffrement, sélectionnez l'une des options suivantes :
      • Aucun : si votre base de données source ne nécessite pas de connexions chiffrées SSL/TLS.
      • Obligatoire : si votre base de données source nécessite des connexions chiffrées SSL/TLS. Cette option ne nécessite aucune validation de certificat.
    6. Dans le menu Bases de données à migrer, cliquez sur Personnaliser. Utilisez le panneau latéral avec la découverte de bases de données intégrée pour ne sélectionner que les bases de données que vous souhaitez migrer vers AlloyDB pour PostgreSQL.
    7. Cliquez sur Continuer.
  7. Dans la section Configurer la destination, vous pouvez créer un cluster de destination ou en sélectionner un existant :

    Nouveaux clusters

    Si vous souhaitez créer un cluster de destination, procédez comme suit :

    1. Dans le menu Type d'instance de destination, sélectionnez Nouveau cluster.

      Database Migration Service utilise la configuration AlloyDB pour PostgreSQL par défaut pour un nouveau cluster. Cliquez sur Personnaliser pour ajuster les fonctionnalités du cluster, telles que le type de machine, la disponibilité zonale ou les paramètres de protection des données. Pour en savoir plus sur la configuration des clusters, consultez Créer un cluster et son instance principale dans la documentation AlloyDB pour PostgreSQL.

    2. Dans le champ Mot de passe, saisissez un mot de passe pour l'utilisateur administrateur postgres par défaut. Database Migration Service se connecte en tant que cet utilisateur pour migrer vos données.

    Clusters existants

    Vous pouvez migrer des bases de données vers un cluster existant. Assurez-vous que le cluster de destination est activé pour Private Service Connect, qu'il est à l'état RUNNABLE et qu'il n'applique pas mTLS avec les connecteurs AlloyDB. Procédez comme suit :

    1. Dans le menu Type d'instance de destination, sélectionnez Cluster existant.
    2. Dans le menu ID de cluster existant, sélectionnez l'identifiant du cluster.
  8. Cliquez sur Lancer la migration.

    Database Migration Service crée le job de migration continu et commence à répliquer les données. Vous pouvez surveiller la progression de la migration et l'état de votre cluster de destination dans AlloyDB pour PostgreSQL. Pour en savoir plus, consultez Afficher les détails d'un cluster et d'une instance dans la documentation AlloyDB pour PostgreSQL.

gcloud

Pour créer et exécuter une migration de démarrage rapide à l'aide de la gcloud CLI, procédez comme suit :

  1. Configurez la connectivité à votre base de données source.
    Sélectionnez l'onglet selon que votre base de données source utilise une adresse IP privée (Private Service Connect) ou une adresse IP publique :

    Adresse IP privée (Private Service Connect)

    Pour vous connecter à l'aide de Private Service Connect, configurez votre rattachement de réseau et votre connexion privée :

    1. Configurer le rattachement de réseau : décidez si vous souhaitez créer un rattachement de réseau ou en réutiliser un existant. Vous devez disposer d'un rattachement de réseau dans le réseau où l'adresse IP privée de votre base de données source est accessible.

      • Si vous souhaitez créer un rattachement de réseau, exécutez la commande suivante (cliquez pour afficher tous les détails).

        gcloud compute network-attachments create

        Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

        • NETWORK_ATTACHMENT par le nom du rattachement de réseau à créer.
        • REGION par la région du rattachement de réseau.
        • DEST_PROJECT_ID avec l'ID du projet de destination.
        • SOURCE_PROJECT_ID par l'ID du projet dans lequel réside le réseau source.

        Exécutez la commande suivante :

        Linux, macOS ou Cloud Shell

        gcloud compute network-attachments create NETWORK_ATTACHMENT \
          --region=REGION \
          --connection-preference=ACCEPT_MANUAL \
          --producer-accept-list=DEST_PROJECT_ID \
          --subnets=default \
          --project=SOURCE_PROJECT_ID

        Windows (PowerShell)

        gcloud compute network-attachments create NETWORK_ATTACHMENT `
          --region=REGION `
          --connection-preference=ACCEPT_MANUAL `
          --producer-accept-list=DEST_PROJECT_ID `
          --subnets=default `
          --project=SOURCE_PROJECT_ID

        Windows (cmd.exe)

        gcloud compute network-attachments create NETWORK_ATTACHMENT ^
          --region=REGION ^
          --connection-preference=ACCEPT_MANUAL ^
          --producer-accept-list=DEST_PROJECT_ID ^
          --subnets=default ^
          --project=SOURCE_PROJECT_ID
      • Si vous souhaitez réutiliser un rattachement de réseau existant, passez à l'étape suivante.
    2. Autorisez le projet locataire Database Migration Service à accéder à votre rattachement de réseau : votre rattachement de réseau doit autoriser les connexions provenant du projet locataire Database Migration Service. Procédez comme suit :

      1. Récupérez l'ID du projet locataire Database Migration Service en effectuant un dry run de création de connexion privée (cliquez pour développer) :

        gcloud database-migration private-connections create --validate-only

        Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

        • PRIVATE_CONN par le nom de la ressource de connexion privée.
        • REGION par la région de la connexion privée.
        • NETWORK_ATTACHMENT_URI par l'URI du rattachement de réseau.

        Exécutez la commande suivante :

        Linux, macOS ou Cloud Shell

        gcloud database-migration private-connections create PRIVATE_CONN \
          --region=REGION \
          --network-attachment=NETWORK_ATTACHMENT_URI \
          --display-name=PRIVATE_CONN \
          --format="value(metadata.metadata.tenant_project_id)" \
          --validate-only

        Windows (PowerShell)

        gcloud database-migration private-connections create PRIVATE_CONN `
          --region=REGION `
          --network-attachment=NETWORK_ATTACHMENT_URI `
          --display-name=PRIVATE_CONN `
          --format="value(metadata.metadata.tenant_project_id)" `
          --validate-only

        Windows (cmd.exe)

        gcloud database-migration private-connections create PRIVATE_CONN ^
          --region=REGION ^
          --network-attachment=NETWORK_ATTACHMENT_URI ^
          --display-name=PRIVATE_CONN ^
          --format="value(metadata.metadata.tenant_project_id)" ^
          --validate-only

        Enregistrez l'ID du projet locataire renvoyé pour l'utiliser avec les commandes suivantes.

      2. Autorisez le projet locataire Database Migration Service et le projet de destination à se connecter au rattachement de réseau (cliquez pour développer) :

        gcloud compute network-attachments update

        Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

        • NETWORK_ATTACHMENT par le nom du rattachement de réseau.
        • REGION par la région.
        • DEST_PROJECT_ID avec l'ID du projet de destination.
        • DMS_TENANT_ID par l'ID du projet locataire Database Migration Service récupéré.
        • SOURCE_PROJECT_ID par l'ID du projet dans lequel réside le réseau source.

        Exécutez la commande suivante :

        Linux, macOS ou Cloud Shell

        gcloud compute network-attachments update NETWORK_ATTACHMENT \
          --region=REGION \
          --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID \
          --project=SOURCE_PROJECT_ID

        Windows (PowerShell)

        gcloud compute network-attachments update NETWORK_ATTACHMENT `
          --region=REGION `
          --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID `
          --project=SOURCE_PROJECT_ID

        Windows (cmd.exe)

        gcloud compute network-attachments update NETWORK_ATTACHMENT ^
          --region=REGION ^
          --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ^
          --project=SOURCE_PROJECT_ID
    3. Créez la ressource de connectivité privée Database Migration Service : exécutez la commande suivante (cliquez pour développer) :

      gcloud database-migration private-connections create

      Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

      • PRIVATE_CONN par le nom de la ressource de connexion privée.
      • REGION par la région de la connexion privée.
      • NETWORK_ATTACHMENT_URI par l'URI du rattachement de réseau.

      Exécutez la commande suivante :

      Linux, macOS ou Cloud Shell

      gcloud database-migration private-connections create PRIVATE_CONN \
        --region=REGION \
        --network-attachment=NETWORK_ATTACHMENT_URI \
        --display-name=PRIVATE_CONN

      Windows (PowerShell)

      gcloud database-migration private-connections create PRIVATE_CONN `
        --region=REGION `
        --network-attachment=NETWORK_ATTACHMENT_URI `
        --display-name=PRIVATE_CONN

      Windows (cmd.exe)

      gcloud database-migration private-connections create PRIVATE_CONN ^
        --region=REGION ^
        --network-attachment=NETWORK_ATTACHMENT_URI ^
        --display-name=PRIVATE_CONN

    Adresse IP publique

    Pour vous connecter à une base de données source avec une adresse IP publique, procédez comme suit :

    1. Créez une connexion privée avec une adresse IP publique réservée.
      Exécutez la commande suivante (cliquez pour développer) :

      gcloud database-migration private-connections create

      Cet exemple utilise l'option facultative --no-async pour que toutes les opérations soient effectuées de manière synchrone. Cela signifie que l'exécution de certaines commandes peut prendre un certain temps. Vous pouvez ignorer l'option --no-async pour exécuter des commandes de manière asynchrone. Si vous le faites, vous devez utiliser la commande gcloud database-migration operations describe pour vérifier si l'opération a réussi.

      Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

      • CONNECTION_ID par l'identifiant de la connexion privée.
      • REGION par la région Google Cloud dans laquelle vous souhaitez créer la connexion privée.
      • DISPLAY par un nom à afficher convivial pour la connexion privée.
      • Facultatif : Vous pouvez remplacer l'option --reserved-public-ip par --reserved-public-ip-nat-ips-count pour réserver plusieurs adresses IP publiques dédiées que Database Migration Service utilise pour la connexion. Vous pouvez réserver jusqu'à 10 adresses IP.

      Exécutez la commande suivante :

      Linux, macOS ou Cloud Shell

      gcloud database-migration private-connections create \
        CONNECTION_ID \
        --region=REGION \
        --display-name="DISPLAY" \
        --reserved-public-ip \
        --no-async

      Windows (PowerShell)

      gcloud database-migration private-connections create `
        CONNECTION_ID `
        --region=REGION `
        --display-name="DISPLAY" `
        --reserved-public-ip `
        --no-async

      Windows (cmd.exe)

      gcloud database-migration private-connections create ^
        CONNECTION_ID ^
        --region=REGION ^
        --display-name="DISPLAY" ^
        --reserved-public-ip ^
        --no-async
    2. Récupérez les adresses IP publiques réservées.
      Exécutez la commande suivante (cliquez pour développer) :

      gcloud database-migration connection-profiles fetch-static-ips

      Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

      • REGION par la région Google Cloud de la connexion privée.

      Exécutez la commande suivante :

      Linux, macOS ou Cloud Shell

      gcloud database-migration connection-profiles fetch-static-ips \
        REGION \
        --fetch-reserved-public-ips

      Windows (PowerShell)

      gcloud database-migration connection-profiles fetch-static-ips `
        REGION `
        --fetch-reserved-public-ips

      Windows (cmd.exe)

      gcloud database-migration connection-profiles fetch-static-ips ^
        REGION ^
        --fetch-reserved-public-ips
    3. Ajoutez la ou les adresses IP réservées à la liste d'autorisation de la base de données source.
      Ajoutez les adresses IP récupérées à l'étape précédente à la liste d'autorisation entrante de votre base de données source (par exemple, dans votre configuration pg_hba.conf, les groupes de sécurité du fournisseur de services cloud ou les règles de pare-feu du réseau) afin que Database Migration Service puisse établir une connexion.

  2. Créer un profil de connexion source
    Exécutez la commande suivante (cliquez pour développer) :

    gcloud database-migration connection-profiles create postgresql

    Cet exemple utilise l'option facultative --no-async pour que toutes les opérations soient effectuées de manière synchrone. Cela signifie que l'exécution de certaines commandes peut prendre un certain temps. Vous pouvez ignorer l'option --no-async pour exécuter des commandes de manière asynchrone. Si vous le faites, vous devez utiliser la commande gcloud database-migration operations describe pour vérifier si l'opération a réussi.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • SOURCE_CONN_ID par l'identifiant de votre profil de connexion source.
    • REGION par la région dans laquelle vous souhaitez enregistrer le profil de connexion.
    • SOURCE_PRIVATE_IP par l'adresse IP privée de votre base de données source.
    • SOURCE_PORT par le port de votre base de données source (la valeur par défaut est 5432).
    • SOURCE_USER par le nom de l'utilisateur de migration sur votre base de données source.
    • SOURCE_PASSWORD par le mot de passe de l'utilisateur de migration sur votre base de données source.
    • PRIVATE_CONN par le nom de la ressource de connexion privée.

    Exécutez la commande suivante :

    Linux, macOS ou Cloud Shell

    gcloud database-migration connection-profiles create postgresql \
      SOURCE_CONN_ID \
      --region=REGION \
      --role=SOURCE \
      --host=SOURCE_PRIVATE_IP \
      --port=SOURCE_PORT \
      --username=SOURCE_USER \
      --password=SOURCE_PASSWORD \
      --private-connection=PRIVATE_CONN \
      --no-async

    Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql `
      SOURCE_CONN_ID `
      --region=REGION `
      --role=SOURCE `
      --host=SOURCE_PRIVATE_IP `
      --port=SOURCE_PORT `
      --username=SOURCE_USER `
      --password=SOURCE_PASSWORD `
      --private-connection=PRIVATE_CONN `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration connection-profiles create postgresql ^
      SOURCE_CONN_ID ^
      --region=REGION ^
      --role=SOURCE ^
      --host=SOURCE_PRIVATE_IP ^
      --port=SOURCE_PORT ^
      --username=SOURCE_USER ^
      --password=SOURCE_PASSWORD ^
      --private-connection=PRIVATE_CONN ^
      --no-async
  3. Créez le profil de connexion de destination.
    Sélectionnez l'onglet selon que vous souhaitez migrer vers un cluster AlloyDB pour PostgreSQL nouveau ou existant :

    Nouveaux clusters

    Pour utiliser un nouveau cluster de destination pour la migration de démarrage rapide, créez d'abord le cluster et son instance principale avec la Google Cloud CLI AlloyDB pour PostgreSQL, puis créez le profil de connexion de destination. Procédez comme suit :

    1. Créez un cluster et son instance principale avec la Google Cloud CLI AlloyDB pour PostgreSQL. Veillez à utiliser l'option --enable-private-service-connect pour activer votre cluster de destination pour Private Service Connect. Les migrations à démarrage rapide ne sont compatibles qu'avec les destinations pour lesquelles Private Service Connect est activé.
    2. Créez le profil de connexion de destination pour votre nouveau cluster. Développez la section suivante pour obtenir des informations détaillées sur la commande.

      gcloud database-migration connection-profiles create postgresql

      Cet exemple utilise l'option facultative --no-async pour que toutes les opérations soient effectuées de manière synchrone. Cela signifie que l'exécution de certaines commandes peut prendre un certain temps. Vous pouvez ignorer l'option --no-async pour exécuter des commandes de manière asynchrone. Si vous le faites, vous devez utiliser la commande gcloud database-migration operations describe pour vérifier si l'opération a réussi.

      Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

      • DEST_CONN_ID par l'identifiant du profil de connexion de destination.
      • REGION par la région dans laquelle vous souhaitez enregistrer le profil de connexion. Cette région doit être identique à celle de votre cluster de destination.
      • DEST_CLUSTER par l'ID ou le chemin d'accès complet de la ressource de votre cluster AlloyDB pour PostgreSQL de destination.
      • DEST_USER par le nom de l'utilisateur de migration sur votre base de données de destination.
      • DEST_PASSWORD par le mot de passe de l'utilisateur de migration dans la base de données de destination.

      Exécutez la commande suivante :

      Linux, macOS ou Cloud Shell

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
        --region=REGION \
        --alloydb-cluster=DEST_CLUSTER \
        --username=DEST_USER \
        --password=DEST_PASSWORD \
        --role=DESTINATION \
        --no-async

      Windows (PowerShell)

      gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
        --region=REGION `
        --alloydb-cluster=DEST_CLUSTER `
        --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 ^
        --alloydb-cluster=DEST_CLUSTER ^
        --username=DEST_USER ^
        --password=DEST_PASSWORD ^
        --role=DESTINATION ^
        --no-async

      Vous devriez obtenir un résultat semblable à celui-ci :

      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]
      

    Clusters existants

    Pour migrer vers un cluster de destination existant, créez le profil de connexion pointant vers le cluster précréé. Exécutez la commande suivante (cliquez pour développer) :

    gcloud database-migration connection-profiles create postgresql

    Cet exemple utilise l'option facultative --no-async pour que toutes les opérations soient effectuées de manière synchrone. Cela signifie que l'exécution de certaines commandes peut prendre un certain temps. Vous pouvez ignorer l'option --no-async pour exécuter des commandes de manière asynchrone. Si vous le faites, vous devez utiliser la commande gcloud database-migration operations describe pour vérifier si l'opération a réussi.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • DEST_CONN_ID par l'identifiant du profil de connexion de destination.
    • REGION par la région dans laquelle vous souhaitez enregistrer le profil de connexion. Cette région doit être identique à celle de votre cluster de destination.
    • DEST_CLUSTER par l'ID ou le chemin d'accès complet de la ressource de votre cluster AlloyDB pour PostgreSQL de destination.
    • DEST_USER par le nom de l'utilisateur de migration sur votre base de données de destination.
    • DEST_PASSWORD par le mot de passe de l'utilisateur de migration dans la base de données de destination.

    Exécutez la commande suivante :

    Linux, macOS ou Cloud Shell

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
      --region=REGION \
      --alloydb-cluster=DEST_CLUSTER \
      --username=DEST_USER \
      --password=DEST_PASSWORD \
      --role=DESTINATION \
      --no-async

    Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
      --region=REGION `
      --alloydb-cluster=DEST_CLUSTER `
      --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 ^
      --alloydb-cluster=DEST_CLUSTER ^
      --username=DEST_USER ^
      --password=DEST_PASSWORD ^
      --role=DESTINATION ^
      --no-async

    Vous devriez obtenir un résultat semblable à celui-ci :

    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]
    
  4. Créer un job de migration continu
    Exécutez la commande suivante pour créer un job de migration continu (cliquez pour développer) :

    gcloud database-migration migration-jobs create

    Cet exemple utilise l'option facultative --no-async pour que toutes les opérations soient effectuées de manière synchrone. Cela signifie que l'exécution de certaines commandes peut prendre un certain temps. Vous pouvez ignorer l'option --no-async pour exécuter des commandes de manière asynchrone. Si vous le faites, vous devez utiliser la commande gcloud database-migration operations describe pour vérifier si l'opération a réussi.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • MIGRATION_JOB_ID par l'identifiant de votre job de migration.
    • REGION par la région dans laquelle vous souhaitez enregistrer le job de migration.
    • SOURCE_CONN_ID par l'identifiant du profil de connexion source.
    • DEST_CONN_ID par l'identifiant du profil de connexion de destination.
    • DATABASES_LIST par une liste de bases de données à migrer, séparées par une virgule.

    Exécutez la commande suivante :

    Linux, macOS ou Cloud Shell

    gcloud database-migration migration-jobs create \
      MIGRATION_JOB_ID \
      --region=REGION \
      --type=CONTINUOUS \
      --source=SOURCE_CONN_ID \
      --destination=DEST_CONN_ID \
      --use-postgres-native \
      --postgres-max-additional-subscriptions=10 \
      --databases-filter=DATABASES_LIST \
      --no-async

    Windows (PowerShell)

    gcloud database-migration migration-jobs create `
      MIGRATION_JOB_ID `
      --region=REGION `
      --type=CONTINUOUS `
      --source=SOURCE_CONN_ID `
      --destination=DEST_CONN_ID `
      --use-postgres-native `
      --postgres-max-additional-subscriptions=10 `
      --databases-filter=DATABASES_LIST `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration migration-jobs create ^
      MIGRATION_JOB_ID ^
      --region=REGION ^
      --type=CONTINUOUS ^
      --source=SOURCE_CONN_ID ^
      --destination=DEST_CONN_ID ^
      --use-postgres-native ^
      --postgres-max-additional-subscriptions=10 ^
      --databases-filter=DATABASES_LIST ^
      --no-async

    Vous devriez obtenir un résultat semblable à celui-ci :

    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]
    
  5. 1. Démarrez le job de migration.
    Pour démarrer le job de migration continue, exécutez la commande suivante (cliquez pour développer) :

    gcloud database-migration migration-jobs start

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • MIGRATION_JOB_ID par l'identifiant de votre job de migration.

      Si vous ne connaissez pas l'identifiant, vous pouvez utiliser la commande gcloud database-migration migration-jobs list pour lister tous les jobs de migration d'une région donnée et afficher leurs identifiants.

    • REGION par l'identifiant de la région dans laquelle votre job de migration est enregistré.

    Exécutez la commande suivante :

    Linux, macOS ou Cloud Shell

    gcloud database-migration migration-jobs \
    start MIGRATION_JOB_ID \
      --region=REGION

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    start MIGRATION_JOB_ID `
      --region=REGION

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    start MIGRATION_JOB_ID ^
      --region=REGION

    Résultat

    L'action est effectuée de manière asynchrone. Cette commande renvoie donc une entité Operation qui représente une opération de longue durée :

    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata
      apiVersion: v1
      createTime: '2024-02-20T12:20:24.493106418Z'
      requestedCancellation: false
      target: MIGRATION_JOB_ID
      verb: start
    name: OPERATION_ID
    

    Pour vérifier si l'opération a réussi, vous pouvez interroger l'objet d'opération renvoyé ou vérifier l'état du job de migration :

Finaliser la migration

Lorsque vous décidez de basculer le trafic de votre application vers le nouveau cluster AlloyDB pour PostgreSQL, finalisez la migration en procédant comme suit :

  1. Arrêtez toutes les opérations d'écriture sur votre base de données source. Vous pouvez passer la base de données source en mode lecture seule pour conserver la fonctionnalité de requête opérationnelle pendant le basculement.
  2. Promouvoir le job de migration Pour les migrations à démarrage rapide, votre cluster de destination reste accessible en écriture pendant le processus de migration. La promotion du job de migration ne fait que mettre fin à la réplication et n'a aucune incidence sur votre cluster de destination.
  3. Facultatif : Vérifiez l'exhaustivité et la cohérence des données de migration.

Étapes suivantes