Migrer vers Cloud SQL à l'aide des migrations de démarrage rapide


Cette page explique comment effectuer des migrations PostgreSQL homogènes à démarrage rapide vers Cloud SQL 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 tout ce dont vous avez besoin pour migrer vos bases de données : composants réseau (rattachements de réseau, sous-réseaux, configurations de connectivité privée), profils de connexion et jobs de migration.

Avec les migrations de démarrage rapide, vous pouvez déplacer vos données vers une instance Cloud SQL existante ou en créer une 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 d'un contrôle précis des paramètres de parallélisme du vidage des données.
  • 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 instance 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 de 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 Cloud SQL Admin.

    Activer les API

Rôles requis

Pour obtenir les autorisations nécessaires pour exécuter des migrations de démarrage rapide vers Cloud SQL 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
  • cloudsql.instances.create
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.instances.update
  • cloudsql.instances.delete
  • cloudsql.operations.get
  • cloudsql.users.get
  • cloudsql.users.list
  • cloudsql.users.create
  • cloudsql.users.update
  • cloudsql.users.delete
  • resourcemanager.projects.getIamPolicy

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

  • cloudsql.instances.connect
  • cloudsql.instances.executeSql
  • cloudsql.instances.get
  • cloudsql.instances.import
  • cloudsql.instances.list
  • cloudsql.users.create

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 max_worker_processes sur une valeur au moins égale à la somme du nombre de bases de données que vous souhaitez migrer et du nombre de max_worker_processes déjà utilisés sur votre instance.

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

Console

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

  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 Cloud SQL 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 Cloud SQL 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 instance Cloud SQL 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 instance 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 pour ne sélectionner que les bases de données que vous souhaitez migrer vers Cloud SQL.
    7. Cliquez sur Continuer.
  7. Dans la section Configurer la destination, vous pouvez créer une instance de destination ou en sélectionner une existante.

    Nouvelles instances

    Si vous souhaitez créer une instance de destination, procédez comme suit :

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

      Database Migration Service utilise la configuration Cloud SQL par défaut pour une nouvelle instance. Cliquez sur Personnaliser pour ajuster les fonctionnalités de l'instance, 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 instances, consultez Créer des instances dans la documentation Cloud SQL.

    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.

    Instances existantes

    Vous pouvez migrer des bases de données vers une instance existante. Assurez-vous qu'une adresse IP privée est configurée sur l'instance de destination (avec Private Service Connect, l'accès aux services privés ou les deux) et qu'elle n'applique pas les connexions mTLS. Procédez comme suit :

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

    Database Migration Service crée alors le job de migration et lance le processus de migration. Vous pouvez surveiller la progression de la migration dans les détails du job de migration Database Migration Service. Pour en savoir plus, consultez Gérer les jobs de migration.

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éez le 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 en fonction de votre choix de migrer vers une instance Cloud SQL nouvelle ou existante :

    Nouvelles instances

    Pour utiliser une nouvelle instance de destination pour la migration de démarrage rapide, créez d'abord l'instance avec la Google Cloud CLI Cloud SQL, puis créez le profil de connexion de destination. Procédez comme suit :

    1. Créez une instance avec la Google Cloud CLI Cloud SQL. Assurez-vous que votre instance de destination est configurée avec une adresse IP privée (à l'aide de l'accès aux services privés) ou activée pour Private Service Connect (par exemple, avec l'option --enable-private-service-connect). Les destinations configurées sans adresse IP privée ne sont pas acceptées.
    2. Créez le profil de connexion de destination pour votre nouvelle instance. 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 instance de destination.
      • DEST_INSTANCE par l'ID de l'instance Cloud SQL de destination que vous avez créée au préalable.
      • 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 \
        --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

      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]
      

    Instances existantes

    Pour migrer vers une instance de destination existante, créez le profil de connexion pointant vers l'instance précréée. 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 instance de destination.
    • DEST_INSTANCE par l'ID de l'instance Cloud SQL de destination que vous avez créée au préalable.
    • 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 \
      --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

    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éez le job de migration.
    Exécutez la commande suivante (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. Exécutez le job de migration.
    Démarrez le job de migration (cliquez pour développer) :

    gcloud database-migration migration-jobs start

    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.

      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 votre application vers la nouvelle instance Cloud SQL, 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 les passer en mode lecture seule pour conserver les fonctionnalités opérationnelles.
  2. Promouvoir le job de migration Pour les migrations automatisées, votre instance 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 instance de destination.
  3. Facultatif : vérifiez l'exhaustivité des données de migration.

Étapes suivantes