Migrer de Cloud SQL pour PostgreSQL vers AlloyDB pour PostgreSQL

Pour évaluer AlloyDB pour PostgreSQL ou migrer une charge de travail existante sans configurer de réplication continue, vous pouvez copier une sauvegarde Cloud SQL pour PostgreSQL directement dans un clusterAlloyDB.

Cette page suppose que vous connaissez déjà 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 configurations suivantes ne sont pas acceptées :

  • Restaurations interprojets et interrégionales
  • Instances avec clés de chiffrement gérées par le client (CMEK)

Avant de commencer

  1. 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

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

  3. Activez les API AlloyDB, Compute Engine et Service Networking, si elles ne le sont pas déjà.

    Rôles requis pour activer les API

    Pour activer des API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

    Activer les API

  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 AlloyDBstandard, 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 standard. N'oubliez pas que les versions d'extension et les versions mineures de PostgreSQL peuvent être différentes.

La copie d'une sauvegarde à partir de Cloud SQL n'est possible que pour les éléments compatibles avec le cluster AlloyDBstandard .

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

Console

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

    accéder aux clusters

  2. Cliquez sur Migrer des données, puis sélectionnez Copier à partir de la sauvegarde Cloud SQL.
  3. 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.
  4. Sur la page Sélectionner le type de cluster, sélectionnez Cluster provisionné.
  5. Cliquez sur Sélectionner un type de cluster.
  6. Sélectionnez l'instance Cloud SQL à partir de laquelle vous souhaitez copier une sauvegarde, puis cliquez sur Sélectionner une instance. Vous pouvez filtrer les instances Cloud SQL.
    Seules les versions de base de données compatibles sont affichées. Les instances répliquées ne disposent pas de sauvegardes et ne sont pas affichées dans la liste des instances disponibles.
  7. Sélectionnez la sauvegarde à partir de laquelle vous souhaitez effectuer l'importation, puis cliquez sur Sélectionner une sauvegarde. Cette page affiche les 1 000 sauvegardes les plus récentes.
  8. Sur la page Créer votre cluster provisionné, saisissez vos informations de mise en réseau. L'ID du cluster est renseigné par défaut, mais vous pouvez également personnaliser votre cluster provisionné.
  9. Cliquez sur Créer un cluster.

Une fois l'opération terminée, une instance principale est automatiquement créée. Un nouveau cluster AlloyDB s'affiche 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, AlloyDB mappe et conserve les configurations des utilisateurs individuels et des groupes IAM. AlloyDB migre également les indicateurs de base de données compatibles avec Cloud SQL pour PostgreSQL et AlloyDB. Les autorisations au niveau des ressources ne sont pas migrées automatiquement. Une fois la copie terminée, vous devez configurer manuellement les autorisations et les indicateurs de base de données qui n'ont pas été migrés en raison d'une incompatibilité.

Vous pouvez vérifier quels indicateurs de base de données de Cloud SQL pour PostgreSQL sont compatibles avec AlloyDB sur la page Créer votre cluster provisionné.

gcloud

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

  1. Exécutez la commande gcloud alloydb clusters migrate-cloud-sql :
          gcloud alloydb clusters migrate-cloud-sql 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=STANDARD
          

    Remplacez les éléments suivants :

    • CLUSTER_ID : 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 la sauvegarde.
    • CLOUD_SQL_INSTANCE_ID : ID de l'instance Cloud SQL à partir de laquelle effectuer la migration. Il doit s'agir de l'ID de l'instance.
    • CLOUD_SQL_PROJECT_ID : ID du projet Cloud SQL à partir duquel effectuer la migration. Il doit s'agir de l'ID du projet.
    • PASSWORD : mot de passe de l'utilisateur PostgreSQL initial à 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.
    • DATABASE_VERSION : version de la base de données du cluster. Il doit s'agir de l'une des valeurs suivantes : POSTGRES_14, POSTGRES_15, POSTGRES_16, POSTGRES_17 ou POSTGRES_18. La version de la base de données doit être identique à celle de la sauvegarde Cloud SQL.
  2. Exécutez la commande gcloud alloydb operations describe pour confirmer l'état de l'opération de sauvegarde :
          gcloud alloydb operations describe OPERATION_ID \
            --region=REGION_ID \
            --project=PROJECT_ID
          

    Remplacez les éléments suivants :

    • OPERATION_ID : nom de l'opération Cloud SQL pour PostgreSQL.
    • REGION_ID : région dans laquelle le cluster Cloud SQL pour PostgreSQL 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 backupRuns.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.

    Pour envoyer votre requête, 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.

    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/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
            

    PowerShell (Windows)

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

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

    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/v1/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 d'objets BackupRun :

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

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

  2. Appelez la méthode clusters.restoreFromCloudSQL :
            POST https://alloydb.googleapis.com/v1/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/POSTGRES_17/POSTGRES_18",
              "subscriptionType": "STANDARD"
            },
            // 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 requête, utilisez l'une des options suivantes :

    curl (Linux, macOS ou Cloud Shell)

    La commande suivante suppose que vous vous êtes connecté à la gcloud CLI avec votre compte utilisateur en exécutant gcloud init ou gcloud auth login, ou en utilisant Cloud Shell, qui vous connecte automatiquement à la 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, puis 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/v1/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 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, puis 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/v1/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.

    AlloyDB crée un cluster dans le projet et l'emplacement spécifiés, puis restaure son volume à partir de la sauvegarde spécifiée dans le message CloudSQLBackupRunSource.

  3. Lorsque le cluster est à l'état READY, créez l'instance principale en appelant la méthode projects.locations.clusters.instances.create :
          POST https://alloydb.googleapis.com/v1/{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 requête, utilisez l'une des options suivantes :

    curl (Linux, macOS ou Cloud Shell)

    La commande suivante suppose que vous vous êtes connecté à la gcloud CLI avec votre compte utilisateur en exécutant gcloud init ou gcloud auth login, ou en utilisant Cloud Shell, qui vous connecte automatiquement à la 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, puis 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/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"
          

    PowerShell (Windows)

    La commande suivante suppose que vous vous êtes connecté à la gcloud CLI avec votre compte utilisateur en exécutant gcloud init ou gcloud auth login, ou en utilisant Cloud Shell, qui vous connecte automatiquement à la 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, puis 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/v1/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 que l'instance est passée à l'état READY, connectez-vous à l'instance et accédez aux données restaurées à partir de l'instantané Cloud SQL.

Étapes suivantes