Utiliser des migrations de démarrage rapide avec Database Migration Service

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 continue 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 (associations réseau, sous-réseaux, configurations de connectivité privée), profils de connexion et jobs de migration.

Les migrations rapides vous permettent de transférer vos données vers une instance Cloud SQL pour PostgreSQL existante ou d'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, où vous n'avez pas besoin de contrôler précisément les 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 celui de votre source et définir Database Migration Service pour créer le rattachement de réseau et le sous-réseau dans le réseau VPC (cloud privé virtuel) d'un autre projet.
  • Migrer depuis des sources disposant d'une adresse IP privée dans votre réseau de cloud privé virtuel (VPC), comme 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. Google Cloud

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

  • La seule méthode de connectivité de base de données acceptée est celle des interfaces Private Service Connect avec les configurations de connectivité privée Database Migration Service. Votre base de données source doit disposer d'une adresse IP privée attribuée dans le réseau VPC. Les autres méthodes de connectivité source homogènes (telles que les listes d'autorisation d'adresses IP publiques, les tunnels SSH inversés ou l'appairage de VPC) ne sont pas compatibles avec les migrations rapides.

Pour en savoir plus sur les migrations à démarrage rapide, consultez Migrations à démarrage rapide dans la documentation Database Migration Service.

Avant de commencer

  1. Vérifiez si les migrations rapides peuvent prendre en charge entièrement votre scénario. Consultez les limites de la migration rapide dans la documentation Database Migration Service.
  2. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

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

    Roles required to select or create a project

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

    Go to project selector

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

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

    Roles required to select or create a project

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

    Go to project selector

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

  7. 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 pour PostgreSQL avec Database Migration Service, demandez à votre administrateur d'attribuer les rôles Identity and Access Management (IAM) 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 la section Gérer les accès de la documentation IAM.

Rôles et autorisations dans le projet source

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

  • Pour le compte utilisateur qui effectue la migration : 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 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 à 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

Accordez 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 dans 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 à 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 :

  1. Créez un compte utilisateur dédié à la migration dans votre instance.
    • Pour les sources Cloud SQL pour PostgreSQL, consultez Créer un utilisateur dans la documentation Cloud SQL pour PostgreSQL.
    • Pour d'autres sources, consultez la documentation de votre fournisseur de base de données ou créez et gérez des utilisateurs dans la documentation PostgreSQL.
  2. Attribuez les droits nécessaires au compte utilisateur dédié à la migration. Exécutez les commandes suivantes pour chaque base de données à 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 dans 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 :
    • Attribuez le rôle PostgreSQL SUPERUSER au compte de migration.
      • Pour les sources Cloud SQL pour PostgreSQL, attribuez le rôle cloudsqlsuperuser.
      • Pour les autres sources, attribuez le rôle SUPERUSER ou consultez la documentation de votre fournisseur de base de données pour obtenir un ensemble d'autorisations équivalent.
    • 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 :

      • Remplacez 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 ni DELETE pour les tables sans clé primaire pendant la phase de capture des 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 correspond au nom de la table qui ne comporte pas de clés primaires.
    • INDEX_NAME est l'index unique qui permet de suivre les lignes des tables sans clé primaire.
  5. Configurez les paramètres de réplication à l'aide d'options de base de données.

    Sources autogérées

    Pour enregistrer les modifications apportées aux options de base de données, vous devez redémarrer complètement la base de données. Les exemples suivants utilisent des requêtes SQL pour modifier les valeurs des indicateurs. Si vous ne pouvez pas exécuter de requêtes SQL directement, consultez la documentation de votre fournisseur pour savoir comment modifier ces indicateurs.

    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 une valeur au moins égale au nombre de bases de données que vous migrez par tâche de migration, avec certaines réserves pour la synchronisation des tables.

      Par exemple, si vous migrez cinq bases de données et que deux tâches de migration sont créées pour l'instance source, le nombre d'emplacements de réplication doit être au moins égal à 5 * 2 = 10, en plus du 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;
          
      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, en plus du 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;
          
      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 à 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. Pour définir ce paramètre, exécutez la commande suivante :
      ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
          
      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 options 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 prenne effet. Pour en savoir plus sur la configuration des options de base de données dans Cloud SQL, consultez Configurer des options de base de données dans la documentation Cloud SQL.

    1. Définissez le flag cloudsql.logical_decoding sur on.
    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 une valeur au moins égale au nombre de bases de données que vous migrez par tâche de migration, avec certaines réserves pour la synchronisation des tables.

      Par exemple, si vous migrez cinq bases de données et que deux tâches de migration sont créées pour l'instance source, le nombre d'emplacements de réplication doit être au moins égal à 5 * 2 = 10, en plus du 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, en plus du 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 un nombre au moins égal à 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

Lorsque vous utilisez des migrations rapides, vous pouvez créer une instance Cloud SQL et y migrer vos bases de données, ou migrer des bases de données vers une instance existante.

Migrations à démarrage rapide pour les nouvelles instances

Pour créer une instance Cloud SQL pour PostgreSQL et y migrer immédiatement vos bases de données, procédez comme suit :

  1. Accédez à la page Instances.

    Accéder à la page "Instances"

  2. Cliquez sur Créer une instance > À partir d'une base de données existante.
  3. Dans la fenêtre Migrer une base de données existante, sélectionnez Migration PostgreSQL à démarrage rapide, puis cliquez sur Continuer.

    Le formulaire de migration rapide Database Migration Service s'ouvre.

  4. 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 pour PostgreSQL de destination.
    2. Dans la zone Préfixe de migration, saisissez une chaîne conviviale 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 réseau et le sous-réseau de rattachement 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.
  5. Dans la section Associer une 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 avec 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 sélectionner uniquement les bases de données que vous souhaitez migrer vers Cloud SQL pour PostgreSQL.
    6. Cliquez sur Continuer.
  6. Dans la section Configurer la 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 pour PostgreSQL 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.

    2. Dans le champ Mot de passe, saisissez le mot de passe de l'utilisateur administrateur postgresql par défaut. Database Migration Service se connecte en tant que cet utilisateur pour migrer vos données.
  7. 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 dans la documentation Database Migration Service.

Migrations à démarrage rapide pour les instances existantes

Pour migrer des bases de données vers une instance Cloud SQL existante, procédez comme suit :

  1. Accédez à la page Instances.

    Accéder à la page "Instances"

  2. Sélectionnez l'instance Cloud SQL vers laquelle vous souhaitez migrer vos bases de données.
  3. Sur la page d'informations de l'instance, cliquez sur Migrer la base de données.

    Le formulaire de migration rapide Database Migration Service s'ouvre.

  4. 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 pour PostgreSQL de destination.
    2. Dans la zone Préfixe de migration, saisissez une chaîne conviviale 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 des interfaces Private Service Connect dans le réseau VPC de la base de données source. 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 une pièce jointe réseau, un sous-réseau de pièce jointe réseau et une configuration de connectivité privée dans le réseau VPC de la base de données source.
    4. Cliquez sur Continuer.
  5. Dans la section Associer une 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 avec 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 sélectionner uniquement les bases de données que vous souhaitez migrer vers Cloud SQL pour PostgreSQL.
  6. 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 dans la documentation Database Migration Service.

Finaliser la migration

Lorsque vous décidez de transférer 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.
  3. Facultatif : vérifiez l'exhaustivité des données de migration.

Étapes suivantes