Migrer de Cloud SQL pour PostgreSQL vers AlloyDB pour PostgreSQL

Cette page explique comment migrer une instance Cloud SQL pour PostgreSQL en copiant une sauvegarde Cloud SQL dans un AlloyDB pour PostgreSQL . La copie d'une sauvegarde Cloud SQL dans un cluster AlloyDB vous permet de charger rapidement des données dans Cloud SQL pour PostgreSQL, ce qui vous permet d'évaluer ou de migrer vers AlloyDB.

Cette page suppose que vous connaissez Cloud SQL. Si vous débutez avec AlloyDB, consultez la présentation d'AlloyDB.

Pour savoir comment migrer vos données de Cloud SQL vers AlloyDB à l'aide de la réplication continue des données, consultez Database Migration Service pour PostgreSQL vers AlloyDB.

Les éléments suivants ne sont pas acceptés :

  • Instances Cloud SQL Enterprise Plus
  • Restauration interprojets et interrégionale
  • Instances avec des clés de chiffrement gérées par le client (CMEK)
  • Instances avec authentification de groupe Identity and Access Management (IAM)

Avant de commencer

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

  3. Enable the AlloyDB, Compute Engine, and Service Networking APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  4. Assurez-vous de disposer des éléments suivants :

    Rôles requis

    Pour obtenir les autorisations nécessaires pour copier une sauvegarde Cloud SQL pour PostgreSQL dans un cluster AlloyDB, accordez-vous les rôles IAM suivants sur votre projet :

    Copier une sauvegarde Cloud SQL dans un cluster AlloyDB

    Lorsque vous copiez une sauvegarde Cloud SQL dans un cluster AlloyDB, la sauvegarde est restaurée dans la même version de PostgreSQL sur AlloyDB. Par exemple, une sauvegarde Cloud SQL PostgreSQL 14 est restaurée dans un cluster PostgreSQL 14 . N'oubliez pas que les versions d'extension et les versions mineures de PostgreSQL peuvent être différentes.

    La copie d'une sauvegarde depuis Cloud SQL n'est compatible qu'avec la configuration des éléments pris en charge dans le cluster AlloyDB .

    Pour copier une sauvegarde Cloud SQL dans un cluster AlloyDB, procédez comme suit :

    Console

    1. Dans la console Trusted Cloud , accédez à la page Clusters.

      accéder aux clusters

    2. Si vous n'avez pas encore provisionné de cluster, cliquez sur Démarrer un essai gratuit. Si vous disposez d'un cluster existant, cliquez sur Migrer les données.
    3. Cliquez sur Copier à partir de la sauvegarde Cloud SQL.
    4. Sur la page Copier à partir de la sauvegarde Cloud SQL, activez les API requises. Si vous avez déjà activé les API, vous n'avez pas besoin de les réactiver.
    5. Sur la page Sélectionner le type de cluster, cliquez sur Cluster d'essai sans frais. Si vous n'êtes pas éligible à un cluster d'essai gratuit, ce champ est grisé.
    6. Cliquez sur Sélectionner un type de cluster.
    7. Sélectionnez l'instance Cloud SQL à partir de laquelle vous souhaitez effectuer une copie, puis cliquez sur Sélectionner l'instance. Vous pouvez filtrer les instances Cloud SQL.
      Seules les versions de base de données compatibles sont affichées. Les répliques ne disposent pas de sauvegardes et ne sont pas affichées dans la liste des instances disponibles.
    8. Sélectionnez la sauvegarde à partir de laquelle vous souhaitez importer les données, puis cliquez sur Sélectionner la sauvegarde. Cette page affiche les 1 000 sauvegardes les plus récentes.
    9. Sur la page Créez votre cluster gratuit, saisissez l'ID du cluster et vos informations réseau.
    10. Cliquez sur Démarrer un essai gratuit.

    Une fois l'opération terminée, une instance principale est automatiquement créée. Un cluster AlloyDB est créé avec les données copiées à partir de la sauvegarde Cloud SQL pour PostgreSQL que vous avez sélectionnée.

    Lorsque vous copiez une sauvegarde Cloud SQL pour PostgreSQL dans un cluster AlloyDB, les indicateurs de base de données et les autorisations au niveau des ressources ne sont pas migrés automatiquement. Une fois la copie terminée, vous devez configurer manuellement ces indicateurs et autorisations.

    Vous pouvez vérifier les options de base de données Cloud SQL pour PostgreSQL compatibles avec AlloyDB sur la page Créer votre cluster sans frais.

    gcloud

    Pour utiliser la gcloud CLI, vous pouvez installer et initialiser la gcloud CLI, ou utiliser Cloud Shell.

    1. Exécutez la commande gcloud beta alloydb clusters migrate-cloud-sql :
            gcloud beta alloydb clusters migrate-cloud-sql CLUSTER_ID
      --cluster-id=CLUSTER_ID \
      --cloud-sql-backup-id=CLOUD_SQL_BACKUP_ID \
      --cloud-sql-instance-id=CLOUD_SQL_INSTANCE_ID \
      --cloud-sql-project-id=CLOUD_SQL_PROJECT_ID
      --password=PASSWORD \
      --region=REGION \
      --database-version=DATABASE_VERSION \
      --subscription-type=TRIAL

      Remplacez les éléments suivants :

      • CLUSTER : ID du cluster Cloud SQL pour PostgreSQL.
      • CLOUD_SQL_BACKUP_ID : ID de la sauvegarde Cloud SQL à partir de laquelle effectuer la migration. Il doit s'agir de l'ID de sauvegarde.
      • CLOUD_SQL_INSTANCE_ID : ID de l'instance Cloud SQL à partir de laquelle migrer. Il doit s'agir de l'ID d'instance.
      • CLOUD_SQL_PROJECT_ID : projet CloudSQL à partir duquel migrer. Il doit s'agir de l'ID du projet.
      • PASSWORD : mot de passe initial de l'utilisateur PostgreSQL à configurer lors de la création du cluster.
      • REGION : emplacement (par exemple, asia-east1 ou us-east1). Consultez la liste complète des régions sur la page Emplacements régionaux.
      • DATABASE_VERSION : version de la base de données du cluster. Cette valeur doit être l'une des suivantes : POSTGRES_14, POSTGRES_15 ou POSTGRES_16. La version de la base de données doit être identique à celle de la sauvegarde Cloud SQL.
      • SUBSCRIPTION_TYPE : type d'abonnement du cluster. Il doit s'agir de l'un des éléments suivants : STANDARD ou TRIAL.
    2. Exécutez la commande gcloud beta alloydb operations describe pour confirmer l'état de l'opération de sauvegarde :
            gcloud beta alloydb operations describe OPERATION_ID \
              --region=REGION_ID \
              --project=PROJECT_ID
            

      Remplacez les éléments suivants :

      • OPERATION_ID : nom de l'opération AlloyDB.
      • REGION_ID : région dans laquelle le cluster AlloyDB est déployé.
      • PROJECT_ID : ID du projet.
    3. Utilisez la commande gcloud alloydb instances create pour créer une instance principale.

    API REST

    1. Pour obtenir la liste des sauvegardes de l'instance à partir de laquelle vous souhaitez restaurer votre sauvegarde, appelez la méthode backupsRuns.list :
            GET "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
            

      Remplacez les éléments suivants :

      • PROJECT_ID : ID du projet.
      • INSTANCE_ID : ID de l'instance.

      Corps JSON de la requête :

            {
              "kind": string,
              "items": [
                {
                  object (BackupRun)
                }
              ],
              "nextPageToken": string
            }
            

      Pour envoyer votre demande, utilisez l'une des options suivantes :

      curl (Linux, macOS ou Cloud Shell)

      La commande suivante suppose que vous vous êtes connecté à gcloud CLI avec votre compte utilisateur en exécutant gcloud init ou gcloud auth login, ou en utilisant Cloud Shell, qui vous connecte automatiquement à gcloud CLI.

      Vous pouvez exécuter gcloud auth list pour vérifier le compte actuellement actif.

      Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante :

              curl -X GET \
                     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                     -H "Content-Type: application/json; charset=utf-8" \
                     "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
              

      PowerShell (Windows)

      La commande suivante suppose que vous vous êtes connecté à gcloud CLI avec votre compte utilisateur en exécutant gcloud init ou gcloud auth login, ou en utilisant Cloud Shell, qui vous connecte automatiquement à gcloud CLI.

      Vous pouvez exécuter gcloud auth list pour vérifier le compte actuellement actif.

      Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante :

               $cred = gcloud auth print-access-token
               $headers = @{ "Authorization" = "Bearer $cred" }
               Invoke-WebRequest `
                -Method GET `
                -Headers $headers `
                -ContentType: "application/json; charset=utf-8" `
                -Uri
                "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"|Select-Object -Expand Content
            

      Vous recevez une réponse JSON de ce type :

      Réponse

      Si la requête aboutit, le corps de la réponse contient une liste de BackupRun.

      La réponse de l'API renvoie une liste des sauvegardes de l'instance sous forme de tableau, y compris "id": string,.

    2. Appelez la méthode restoreFromCloudSQL :

              POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL
            

      Remplacez les éléments suivants :

      • PROJECT_ID : ID du projet.
      • REGION : région dans laquelle le cluster AlloyDB est déployé.

      Corps JSON de la requête :

            {
              "clusterId": string,
              "cluster": {
                "databaseVersion": "POSTGRES_14/POSTGRES_15/POSTGRES_16",
                "subscriptionType": "TRIAL"
              },
              // Union field source can be only one of the following:
              "cloudsqlBackupRunSource": {
                object (CloudSQLBackupRunSource)
              }
              // End of list of possible types for union field source.
            }
            

      Pour envoyer votre demande, utilisez l'une des options suivantes :

      curl (Linux, macOS ou Cloud Shell)

      La commande suivante suppose que vous vous êtes connecté à gcloud CLI avec votre compte utilisateur en exécutant gcloud init ou gcloud auth login, ou en utilisant Cloud Shell, qui vous connecte automatiquement à gcloud CLI.

      Vous pouvez exécuter gcloud auth list pour vérifier le compte actuellement actif.

      Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante :

              curl -X POST \
                     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                     -H "Content-Type: application/json; charset=utf-8" \
                     -d @request.json \
                     "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"
            

      PowerShell (Windows)

      La commande suivante suppose que vous vous êtes connecté à gcloud CLI avec votre compte utilisateur en exécutant gcloud init ou gcloudauth login, ou en utilisant Cloud Shell, qui vous connecte automatiquement à gcloud CLI.

      Vous pouvez exécuter gcloud auth list pour vérifier le compte actuellement actif.

      Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante :

              $cred = gcloud auth print-access-token
              $headers = @{ "Authorization" = "Bearer $cred" }
              Invoke-WebRequest `
                -Method POST `
                -Headers $headers `
                -ContentType: "application/json; charset=utf-8" `
                -InFile request.json `
                -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"|Select-Object -Expand Content
            

      Vous recevez une réponse JSON de ce type :

      Réponse

      Si la requête aboutit, le corps de la réponse contient une instance de Operation.

      Un cluster est créé dans le projet et l'emplacement spécifiés, avec un volume restauré à partir de la sauvegarde indiquée dans le message CloudSQLBackupRunSource.

    3. Lorsque le cluster est à l'état READY, créez l'instance principale en appelant la méthode projects.locationsinstances.create :
            POST https://alloydb.googleapis.com/v1beta/{parent=projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID}/instances
            

      Remplacez les éléments suivants :

      • PROJECT_ID : ID du projet.
      • REGION : région dans laquelle le cluster AlloyDB est déployé.
      • CLUSTER_ID : ID du cluster.

      Corps JSON de la requête :

              {
                "instanceId": "string",
                "instance": {
                  "object": "Instance"
                }
              }
            

      Le corps de la requête contient une instance de Instance.

      Pour envoyer votre demande, utilisez l'une des options suivantes :

      curl (Linux, macOS ou Cloud Shell)

      La commande suivante suppose que vous vous êtes connecté à gcloud CLI avec votre compte utilisateur en exécutant gcloud init ou gcloud auth login, ou en utilisant Cloud Shell, qui vous connecte automatiquement à gcloud CLI.

      Vous pouvez exécuter gcloud auth list pour vérifier le compte actuellement actif.

      Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante :

              curl -X POST \
                   -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                   -H "Content-Type: application/json; charset=utf-8" \
                   -d @request.json \
                   "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"
            

      PowerShell (Windows)

      La commande suivante suppose que vous vous êtes connecté à gcloud CLI avec votre compte utilisateur en exécutant gcloud init ou gcloud auth login, ou en utilisant Cloud Shell, qui vous connecte automatiquement à gcloud CLI.

      Vous pouvez exécuter gcloud auth list pour vérifier le compte actuellement actif.

      Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante :

               $cred = gcloud auth print-access-token
               $headers = @{ "Authorization" = "Bearer $cred" }
               Invoke-WebRequest `
                 -Method POST `
                 -Headers $headers `
                 -ContentType: "application/json; charset=utf-8" `
                 -InFile request.json `
                 -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"|Select-Object -Expand Content
            

      Vous recevez une réponse JSON de ce type :

      Réponse

      Si la requête aboutit, le corps de la réponse contient une nouvelle instance de Operation.

    4. Une fois l'instance mise à jour à l'état READY, connectez-vous à l'instance et accédez aux données restaurées à partir du instantané Cloud SQL.

    Étapes suivantes