Créer un job de migration vers une nouvelle instance de destination

Lorsque vous créez votre instance de destination avec Database Migration Service, cette instance n'est pas rétrogradée et ne s'exécute pas en mode lecture seule. Toutefois, l'exécution de certaines opérations pendant le processus de migration peut entraîner des erreurs de migration. Lorsque vous migrez vers une nouvelle instance de destination, tenez compte des points suivants :

  • Évitez les opérations d'écriture sur les données en cours de migration : n'effectuez pas d'opérations d'écriture (telles que INSERT, UPDATE, DELETE ou des modifications de schéma LDD) dans l'instance de destination sur les tables ou les bases de données incluses dans la migration. Ces opérations peuvent entraîner des conflits de réplication avec les données provenant de la source.
  • Gérer les utilisateurs de la base de données : vous pouvez créer et gérer des utilisateurs de la base de données à tout moment à l'aide de commandes psql standards ou via Cloud SQL dans la console Google Cloud . Pour en savoir plus, consultez Gérer les utilisateurs dans la documentation Cloud SQL.
  • Sauvegardes et instances répliquées avec accès en lecture : les sauvegardes automatiques et la récupération à un moment précis (PITR) sont suspendues pendant la réplication continue. Vous ne pouvez pas créer d'instances répliquées avec accès en lecture Cloud SQL à partir de l'instance de destination tant que le job de migration n'est pas promu.

Pour en savoir plus, consultez Limites connues.

La création d'un job de migration comprend les étapes suivantes :

  1. Définir les paramètres du job de migration.
  2. Définir les paramètres de la source et sélectionner les bases de données à migrer
  3. Définir les paramètres de l'instance de base de données Cloud SQL de destination et créer l'instance.
  4. Configurer la connectivité entre les instances de base de données source et de destination.
  5. Tester le job de migration pour vous assurer que les informations de connexion fournies pour le job sont valides.

Pour créer un job de migration vers une nouvelle instance de destination, procédez comme suit :

Console

Définir les paramètres du job de migration

  1. Dans la console Google Cloud , accédez à la page Jobs de migration.

    Accéder à la page "Jobs de migration"

  2. Cliquez sur Créer un job de migration.

    La page de l'assistant de configuration du job de migration s'ouvre. Cet assistant contient plusieurs panneaux qui vous guident à travers chaque étape de configuration.

    Vous pouvez suspendre la création d'un job de migration à tout moment en cliquant sur Enregistrer et quitter. Toutes les données que vous avez saisies jusqu'à ce stade sont enregistrées dans un brouillon de job de migration. Vous pourrez terminer votre brouillon de job de migration plus tard.

  3. Sur la page Premiers pas, saisissez les informations suivantes :
    1. Nom de la tâche de migration

      Il s'agit d'un nom lisible par l'humain pour votre job de migration. Cette valeur s'affiche dans la console Google Cloud .

    2. ID du job de migration

      Il s'agit d'un identifiant lisible par machine pour votre job de migration. Vous utilisez cette valeur pour travailler avec des jobs de migration à l'aide des commandes de la Google Cloud CLI ou de l'API Database Migration Service.

    3. Dans la liste Moteur de base de données source, sélectionnez PostgreSQL.

      Le champ Moteur de base de données de destination est automatiquement renseigné avec Cloud SQL pour PostgreSQL et ne peut pas être modifié.

    4. Sélectionnez la région dans laquelle vous enregistrez le job de migration.

      Database Migration Service est un produit entièrement régional, ce qui signifie que toutes les entités liées à votre migration (profils de connexion source et de destination, jobs de migration, bases de données de destination) doivent être enregistrées dans une seule région. Sélectionnez la région en fonction de l'emplacement des services qui ont besoin de vos données, tels que les instances Compute Engine, les applications App Engine ou d'autres services. Une fois que vous avez choisi la région de destination, cette sélection ne peut plus être modifiée.

    5. Spécifiez le type de mission de migration : Ponctuel ou Continu.
    6. Examinez les conditions préalables générées pour votre environnement. Assurez-vous que votre base de données source est configurée correctement. Pour en savoir plus, consultez Configurer la base de données source.
  4. Cliquez sur Enregistrer et continuer.

Spécifier des informations sur le profil de connexion source

Sur la page Définir une source, procédez comme suit :

  1. Dans le menu déroulant Profil de connexion source, sélectionnez le profil de connexion de votre base de données source (ou cliquez sur Créer un profil de connexion, consultez Créer un profil de connexion source).
  2. Dans la section Personnaliser les configurations de parallélisme, cliquez sur Afficher les configurations de parallélisme.

    La vitesse du parallélisme du vidage des données est liée à la quantité de charge induite sur votre base de données source. Vous pouvez utiliser les paramètres suivants :

    • Optimal (recommandé) : performances équilibrées avec une charge optimale sur la base de données source.
    • Maximum : fournit les vitesses de vidage les plus élevées, mais peut entraîner une charge accrue sur la base de données source.
    • Minimum : utilise la plus faible quantité de ressources de calcul sur la base de données source, mais peut avoir un débit de vidage plus lent.

    Si vous choisissez des paramètres de parallélisme ajustés, veillez à augmenter les paramètres max_replication_slots, max_wal_senders et max_worker_processes sur votre base de données source. Vous pouvez vérifier votre configuration en exécutant le test du job de migration à la fin de la création du job de migration.

  3. Cliquez sur Enregistrer et continuer.

Configurer et créer l'instance Cloud SQL de destination

  1. Sur la page Définir une destination, sélectionnez Nouvelle instance dans le menu déroulant Type d'instance de destination. Définissez tous les paramètres pertinents :
    1. Dans le champ ID de l'instance de destination, indiquez un identifiant pour l'instance Cloud SQL ou utilisez l'identifiant généré automatiquement.

      N'incluez pas d'informations sensibles ou permettant d'identifier personnellement l'utilisateur dans l'identifiant. Vous n'avez pas besoin d'indiquer l'ID du projet dans le nom de l'instance. Cet ajout s'effectue automatiquement le cas échéant (par exemple, dans les fichiers journaux).

    2. Dans le champ Mot de passe, saisissez un mot de passe alphanumérique pour l'instance Cloud SQL de destination. Il s'agit du mot de passe du compte administrateur postgres dans l'instance.

      Vous pouvez saisir le mot de passe manuellement ou cliquer sur Générer pour que Database Migration Service en crée un automatiquement.

    3. Dans le menu déroulant Version de la base de données, sélectionnez la version de base de données de l'instance de destination.

      En savoir plus sur la compatibilité de la migration entre les versions

    4. Sélectionnez l'édition Cloud SQL pour PostgreSQL pour votre instance de destination. Deux options sont disponibles : Cloud SQL pour PostgreSQL Enterprise et Cloud SQL pour PostgreSQL Enterprise Plus.

      Les éditions Cloud SQL pour PostgreSQL sont proposées avec différents ensembles de fonctionnalités, types de machines disponibles et tarifs. Consultez la documentation Cloud SQL pour choisir l'édition qui correspond à vos besoins. Pour en savoir plus, consultez la page Présentation des éditions Cloud SQL pour PostgreSQL.

    5. Le menu Région affiche la même région que celle que vous avez sélectionnée sur la page Premiers pas.

      Si vous configurez votre instance pour la haute disponibilité, sélectionnez Plusieurs zones (disponibilité élevée). Vous pouvez sélectionner les zones principale et secondaire. Les conditions suivantes s'appliquent lorsque la zone secondaire est utilisée lors de la création de l'instance :

      • Les zones sont définies par défaut sur Peu importe pour la zone principale et sur Peu importe (sauf zone principale) pour la zone secondaire.
      • Si les zones principale et secondaire sont spécifiées, elles doivent être distinctes l'une de l'autre.
    6. Dans la section Connexions, choisissez d'ajouter une adresse IP publique ou privée pour votre instance de destination. Vous pouvez configurer votre instance pour qu'elle dispose des deux types d'adresses IP, mais au moins un type est requis pour la migration. Sélectionnez l'une des options suivantes :
      • Si vous souhaitez effectuer la migration à l'aide de l'appairage de VPC ou d'un tunnel SSH inversé, sélectionnez Adresse IP privée.
        • Pour activer la connectivité IP privée, assurez-vous de respecter toutes les exigences supplémentaires en matière de mise en réseau.

          Développez cette section pour connaître toutes les exigences concernant les adresses IP privées.

        • Sélectionnez le réseau VPC associé à appairer. Si vous prévoyez de vous connecter à la source de migration à l'aide de l'appairage de VPC, choisissez le VPC où se trouve l'instance.
        • Si aucun réseau de service géré n'a été configuré pour le VPC sélectionné, vous pouvez choisir de sélectionner une plage d'adresses IP et de cliquer sur Connecter, ou d'utiliser une plage d'adresses IP sélectionnée automatiquement et de cliquer sur Allouer et connecter.
      • Si vous souhaitez effectuer la migration via Internet à l'aide d'une liste d'autorisation d'adresses IP, sélectionnez Adresse IP publique.

        (Facultatif) Sous Adresse IP publique, cliquez sur le champ Réseaux autorisés, puis autorisez un réseau ou un proxy à se connecter à l'instance Cloud SQL. Les réseaux ne sont autorisés qu'avec les adresses que vous fournissez. Consultez la section Configurer une adresse IP publique dans la documentation Cloud SQL.

      Vous configurerez la connectivité du job de migration ultérieurement. Pour en savoir plus sur les méthodes de mise en réseau disponibles, consultez Configurer la connectivité.

  2. Sélectionnez le type de machine pour l'instance Cloud SQL. En savoir plus sur les types de machines PostgreSQL
  3. Pour l'édition Cloud SQL pour PostgreSQL Enterprise Plus : cochez la case Activer le cache de données si vous souhaitez utiliser la fonctionnalité de cache de données dans votre base de données de destination.

    Le cache de données est une fonctionnalité facultative disponible pour les instances Cloud SQL pour PostgreSQL Enterprise Plus. Il ajoute un disque dur SSD local à haut débit à votre base de données de destination. Cette fonctionnalité peut entraîner des coûts supplémentaires pour votre instance Cloud SQL. Pour en savoir plus sur le cache de données, consultez Présentation du cache de données dans la documentation Cloud SQL.

  4. Indiquez le type de stockage pour l'instance Cloud SQL. Vous pouvez choisir un disque SSD ou un disque dur HDD.
  5. Spécifiez la capacité de stockage (en Go) de l'instance Cloud SQL.

    Assurez-vous que l'instance dispose d'une capacité de stockage suffisante pour gérer les données de votre base de données source. Vous pouvez augmenter cette capacité à tout moment, mais vous ne pouvez pas la réduire.

  6. (Facultatif) Configurez les options de chiffrement des données ou les libellés de ressources pour votre instance de destination.

    Développez cette section pour afficher les étapes facultatives.

    Cliquez sur Afficher les configurations facultatives, puis :

    1. Indiquez si vous souhaitez gérer le chiffrement des données migrées de la source vers la destination. Par défaut, vos données sont chiffrées à l'aide d'une clé gérée par Google Cloud. Si vous souhaitez gérer votre chiffrement, vous pouvez utiliser une clé de chiffrement gérée par le client (CMEK). Pour ce faire :

      1. Cochez la case Utiliser une clé de chiffrement gérée par le client (CMEK).
      2. Dans le menu Sélectionner une clé gérée par le client, sélectionnez votre CMEK.

      Si vous ne voyez pas votre clé, cliquez sur Saisir le nom de ressource de la clé pour indiquer le nom de ressource de la clé que vous souhaitez utiliser. Exemple de nom de ressource de clé : projects/my-project-name/locations/my-location/keyRings/my-keyring/cryptoKeys/my-key.

    2. Ajoutez les options nécessaires à appliquer au serveur de base de données. Si possible, assurez-vous que les indicateurs de base de données de l'instance Cloud SQL de destination créée sont identiques à ceux de la base de données source. En savoir plus sur les indicateurs de base de données compatibles avec PostgreSQL.
    3. Ajoutez les libellés spécifiques à l'instance Cloud SQL.

      Les libellés vous aident à organiser vos instances. Par exemple, vous pouvez organiser les étiquettes par centre de coûts ou par environnement. Elles sont également incluses dans votre facture, ce qui vous permet de vérifier la répartition des coûts.

  7. Cliquez sur Créer une destination et continuer. Database Migration Service crée maintenant votre instance Cloud SQL de destination. Ce processus peut prendre plusieurs minutes.

Configurer la connectivité entre les instances de base de données source et de destination

Dans le menu déroulant Méthode de connectivité, sélectionnez une méthode de connectivité réseau. Cette méthode définit la manière dont l'instance Cloud SQL nouvellement créée se connectera à la base de données source. Les méthodes actuelles de connectivité réseau pour migrer vers une nouvelle instance incluent la liste d'autorisation d'adresses IP, le tunnel SSH inversé et l'appairage de VPC.

Si vous souhaitez utiliser…Alors…
La méthode de connectivité réseau par liste d'autorisation d'adresses IP Vous devez spécifier l'adresse IP sortante de votre instance de destination. Si l'instance Cloud SQL que vous avez créée est une instance à haute disponibilité, incluez les adresses IP sortantes des instances principale et secondaire.
La méthode de connectivité réseau par tunnel SSH inversé, Vous devez sélectionner l'instance de VM Compute Engine qui hébergera le tunnel.

Après avoir spécifié l'instance, Google fournit un script qui effectue les étapes de configuration du tunnel entre les bases de données source et de destination. Vous devrez exécuter le script dans la Google Cloud CLI.

Exécutez les commandes à partir d'une machine connectée à la fois à la base de données source et à Google Cloud.

La méthode de connectivité réseau par appairage de VPC Vous devez sélectionner le réseau VPC où se trouve la base de données source. L'instance Cloud SQL sera mise à jour pour se connecter à ce réseau.

Après avoir sélectionné et configuré la connectivité réseau, cliquez sur Configurer et continuer.

Configurer des bases de données de migration

Vous pouvez migrer toutes les bases de données de votre instance source ou n'en choisir que certaines. Votre instance de destination ne peut pas contenir de bases de données portant le même nom que celles que vous choisissez de migrer. Si Database Migration Service rencontre un conflit de nom de base de données, la base de données incriminée est supprimée dans la destination avant la migration.

  1. Dans la liste Bases de données à migrer, sélectionnez l'une des options suivantes :
    • Toutes les bases de données : sélectionne toutes les bases de données existantes sur la source.
    • Bases de données spécifiques : vous permet de sélectionner des bases de données spécifiques parmi toutes celles qui existent sur la source.
  2. Si vous souhaitez migrer des bases de données spécifiques, vous pouvez filtrer la liste qui s'affiche et sélectionner les bases de données que vous souhaitez que Database Migration Service migre vers votre destination.

    Si la liste ne s'affiche pas et qu'une erreur de découverte de base de données s'affiche, cliquez sur Actualiser. Si la découverte de la base de données échoue, le job migre toutes les bases de données. Vous pouvez continuer à créer un job de migration et corriger les erreurs de connectivité plus tard.

  3. Cliquez sur Enregistrer et continuer.

Tester, créer et exécuter le job de migration

Lors de cette dernière étape, examinez le récapitulatif des paramètres du job de migration, de la source, de la destination et de la méthode de connectivité, puis testez la validité de la configuration du job de migration. Si vous rencontrez des problèmes, vous pouvez modifier les paramètres du job de migration. Tous les paramètres ne sont pas modifiables.

  1. Sur la page Tester et créer le job de migration, cliquez sur Tester le job.

    Si le test échoue, vous pouvez résoudre le problème dans la partie appropriée du flux, puis revenir au test. Pour savoir comment résoudre les problèmes liés à l'échec d'un test de job de migration, consultez Diagnostiquer les problèmes pour PostgreSQL.

  2. Une fois le test du job de migration terminé, cliquez sur Créer et démarrer le job pour créer le job de migration et le démarrer immédiatement, ou sur Créer le job pour créer le job de migration sans le démarrer immédiatement.

    Si le job n'est pas démarré au moment de sa création, vous pouvez le démarrer à partir de la page Jobs de migration en cliquant sur DÉMARRER. Quelle que soit la date de début du job de migration, votre organisation est facturée pour l'existence de l'instance de destination.

    Votre migration est en cours. Lorsque vous démarrez le job de migration, Database Migration Service lance le vidage complet initial et la réplication. Pour en savoir plus, consultez Limites connues.

  3. Passez à l'étape Vérifier le job de migration.

Google Cloud CLI

  1. Créez le profil de connexion de destination.
    Lorsque vous migrez vers une nouvelle instance de destination avec la Google Cloud CLI, vous créez l'instance de destination et le profil de connexion en une seule action.
    Exécutez la commande suivante (cliquez sur le lien 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]
    
  2. Créez le job de migration.
    Si vous utilisez l'appairage de VPC ou une connectivité par tunnel SSH inversé, veillez à ajouter les options requises, telles que --peer-vpc ou --vm, --vm-ip, --vm-port, --vpc. Pour en savoir plus, consultez Configurer la connectivité et Exemples Google Cloud CLI.
    Exécutez la commande suivante (cliquez sur le lien 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 un identifiant lisible par machine pour votre job de migration. Vous utilisez cette valeur pour travailler avec des jobs de migration à l'aide des commandes Google Cloud CLI ou de l'API Database Migration Service.
    • REGION par l'identifiant de la région dans laquelle vous souhaitez enregistrer le job de migration.
    • MIGRATION_JOB_NAME par un nom lisible par l'humain pour votre job de migration. Cette valeur s'affiche dans Database Migration Service dans la console Google Cloud .
    • SOURCE_CONNECTION_PROFILE_ID par un identifiant lisible par machine du profil de connexion source. Pour en savoir plus, consultez Créer un profil de connexion source.
    • DESTINATION_CONNECTION_PROFILE_ID par un identifiant lisible par machine du profil de connexion de destination.
    • Facultatif : Database Migration Service migre par défaut toutes les bases de données de votre source. Si vous ne souhaitez migrer que des bases de données spécifiques, utilisez l'option --databases-filter et spécifiez leurs identifiants sous la forme d'une liste d'éléments séparés par une virgule.

      Par exemple : --databases-filter=my-business-database,my-other-database

      Vous pourrez modifier ultérieurement les jobs de migration que vous avez créés avec l'option --databases-filter à l'aide de la commande gcloud database-migration migration-jobs update.

    Exécutez la commande suivante :

    Linux, macOS ou Cloud Shell

    gcloud database-migration migration-jobs \
    create MIGRATION_JOB_ID \
      --no-async \
      --region=REGION \
      --display-name=MIGRATION_JOB_NAME \
      --source=SOURCE_CONNECTION_PROFILE_ID \
      --destination=DESTINATION_CONNECTION_PROFILE_ID \
      --type=CONTINUOUS

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    create MIGRATION_JOB_ID `
      --no-async `
      --region=REGION `
      --display-name=MIGRATION_JOB_NAME `
      --source=SOURCE_CONNECTION_PROFILE_ID `
      --destination=DESTINATION_CONNECTION_PROFILE_ID `
      --type=CONTINUOUS

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    create MIGRATION_JOB_ID ^
      --no-async ^
      --region=REGION ^
      --display-name=MIGRATION_JOB_NAME ^
      --source=SOURCE_CONNECTION_PROFILE_ID ^
      --destination=DESTINATION_CONNECTION_PROFILE_ID ^
      --type=CONTINUOUS

    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]