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


Cette page explique comment effectuer des migrations à démarrage rapide pour les migrations PostgreSQL homogènes 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 à 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 au sein de votre réseau VPC.

  • Une adresse IP privée doit être attribuée à la base de données source dans votre réseau VPC. Database Migration Service se connecte à la base de données source à l'aide d'interfaces Private Service Connect (rattachements de réseau). La connectivité IP publique n'est pas compatible avec les migrations à démarrage rapide.

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

Attribuez les rôles suivants à des comptes spécifiques sur le projet Google Cloud où réside votre base de données source :

  • Pour le compte utilisateur qui effectue la migration : rôle Administrateur de réseaux Compute (roles/compute.networkAdmin)
  • 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.iam.gserviceaccount.com

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.*
  • compute.subnetworks.*
  • compute.networkAttachments.*

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 :

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 :

  • 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

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 de telles 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 d'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 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

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 à "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 configuration, sélectionnez l'une des options suivantes :
      1. 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.
      2. 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.
    4. Cliquez sur Continuer.
  6. Dans la section Connecter la source, procédez comme suit :
    1. Saisissez un nom d'hôte ou l'adresse IP privée de votre base de données source. L'adresse de la base de données source doit être accessible depuis votre réseau VPC source.
    2. Saisissez le port utilisé pour accéder à l'hôte. Le port PostgreSQL par défaut est 5432.
    3. Saisissez le nom d'utilisateur et le mot de passe du compte de migration dédié dans votre base de données source.
    4. 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.
    5. 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.
    6. 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 que l'instance de destination est activée pour Private Service Connect 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 maintenant 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 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
  4. 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 d'utilisateur 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
  5. Créez le profil de connexion de destination.
    Sélectionnez l'onglet selon que vous souhaitez 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 Cloud SQL Google Cloud CLI, 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. Veillez à utiliser l'option --enable-private-service-connect pour activer Private Service Connect sur votre instance de destination. Les migrations à démarrage rapide ne sont compatibles qu'avec les instances pour lesquelles Private Service Connect est activé.
    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]
    
  6. 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]
    
  7. 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 où votre profil de connexion 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. Par conséquent, cette commande renvoie une entité d'opération 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