Utiliser la récupération à un moment précis (PITR)

Cette page explique comment utiliser la récupération à un moment précis (PITR) pour restaurer votre instance Cloud SQL principale.

Pour en savoir plus sur la récupération PITR, consultez Récupération à un moment précis (PITR).

Si vous créez une instance Cloud SQL Enterprise Plus, la récupération PITR est activée par défaut, quelle que soit la méthode utilisée pour la création. Si vous souhaitez désactiver cette fonctionnalité, vous devez le faire manuellement.

Si vous créez une instance Cloud SQL Enterprise, la récupération PITR est désactivée par défaut, quelle que soit la méthode utilisée pour la création. Dans ce cas, si vous souhaitez activer la fonctionnalité, vous devez le faire manuellement.

Stockage des journaux pour la récupération PITR

Le 31 mai 2024, nous avons lancé le stockage des journaux de transactions pour la récupération PITR dans Cloud Storage. Depuis ce lancement, les conditions suivantes s'appliquent :

  • Les instances Cloud SQL avec récupération PITR activée créées avant cette date stockaient les journaux de transactions PITR sur le disque. Les journaux de transactions PITR de la plupart de ces instances ont depuis été migrés vers Cloud Storage. Pour vérifier l'emplacement des journaux d'une instance spécifique, consultez la section Vérifier l'emplacement de stockage des journaux de transactions utilisés pour la récupération à un moment précis.

  • Toutes les instances Cloud SQL créées avec la récupération PITR activée à compter de cette date stockent ces journaux dans Cloud Storage.

Ces journaux sont mis à jour régulièrement et utilisent de l'espace de stockage. Cloud SQL supprime automatiquement les journaux de transactions et les sauvegardes automatiques associées. Cela se produit une fois que la valeur définie pour le paramètre transactionLogRetentionDays est atteinte. Pour en savoir plus sur ce paramètre, consultez la section Journaux et utilisation du disque.

Pour les instances qui ne stockent les journaux de transactions que sur le disque, vous pouvez configurer Cloud SQL pour qu'il les stocke sur Cloud Storage. Pour ce faire, commencez par désactiver la récupération PITR, puis réactivez-la. Vous ne pouvez pas déplacer les journaux de Cloud Storage vers le disque.

Pour vous assurer que les journaux de votre instance sont stockés dans Cloud Storage plutôt que sur le disque, procédez comme suit:

Journaux et utilisation du disque

Pour les instances disposant de journaux de transactions stockés dans Cloud Storage, les journaux sont stockés dans la même région que l'instance principale. Ce stockage de journaux (jusqu'à 35 jours pour l'édition Cloud SQL Enterprise Plus et sept jours pour l'édition Cloud SQL Enterprise, la durée maximale pour la récupération à un moment précis) ne génère aucun coût supplémentaire par instance.

Cloud SQL génère régulièrement des journaux de transactions qui utilisent de l'espace de stockage. Cloud SQL supprime automatiquement les journaux de transactions et les sauvegardes automatiques associées. Cela se produit une fois que la valeur que vous avez définie pour le paramètre transactionLogRetentionDays est atteinte. Ce paramètre spécifie le nombre de jours pendant lesquels Cloud SQL conserve les journaux de transactions. Pour l'édition Cloud SQL Enterprise Plus, vous pouvez définir le nombre de jours de journaux de transactions conservés entre 1 et 35. Pour l'édition Cloud SQL Enterprise, vous pouvez définir cette valeur entre 1 et 7.

Si aucune valeur n'est définie pour ce paramètre, la durée de conservation des journaux de transactions par défaut est de 14 jours pour les instances Cloud SQL Enterprise Plus et de sept jours pour les instances de l'édition Cloud SQL Enterprise. Pour en savoir plus sur l'application de ce paramètre, consultez la section Définir la durée de conservation des journaux de transactions.

Pour connaître la quantité de disque utilisée par les journaux de transactions, consultez la métrique bytes_used_by_data_type de l'instance. La valeur du type de données renvoie la taille des journaux de transactions sur le disque. Pour les instances qui stockent les journaux de transactions utilisés pour la récupération PITR sur le disque, Cloud SQL supprime définitivement les données du disque quotidiennement afin de respecter le paramètre de récupération PITR transactionLogRetentionDays. Pour en savoir plus, consultez la section Conservation des sauvegardes automatiques.

Limites

Les limites suivantes sont associées à la récupération PITR activée sur votre instance et à la taille de vos journaux de transaction sur le disque qui pose problème pour votre instance:

  • Vous pouvez désactiver la récupération PITR et la réactiver pour vous assurer que Cloud SQL stocke les journaux dans Cloud Storage dans la même région que l'instance. Toutefois, Cloud SQL supprime tous les journaux existants. Vous ne pouvez donc pas effectuer d'opération PITR antérieure à la date à laquelle vous avez réactivé la récupération PITR.
  • Vous pouvez augmenter l'espace de stockage disponible sur l'instance. Sachez toutefois qu'une augmentation importante de l'espace disque occupé par vos journaux de transaction peut être temporaire.
  • Pour éviter les problèmes de stockage inattendus, nous vous recommandons d'activer l'augmentation automatique de l'espace de stockage. Cette recommandation ne s'applique que si la récupération PITR est activée sur votre instance et que vos journaux sont stockés sur le disque.
  • Si vous souhaitez supprimer des journaux et récupérer de l'espace de stockage, vous pouvez désactiver la récupération PITR sans la réactiver. Cependant, la réduction de l'espace de stockage utilisé ne réduit pas la taille du disque provisionné pour l'instance.
  • Les journaux sont supprimés définitivement une fois par jour, et non de manière continue. Si vous définissez la durée de conservation des journaux sur une valeur de deux jours, cela signifie qu'au moins deux jours et au plus trois jours de journaux sont conservés. Nous vous recommandons de définir le nombre de sauvegardes à une valeur correspondant au nombre de jours de conservation des journaux plus un.

    Par exemple, si vous spécifiez 7 pour la valeur du paramètre transactionLogRetentionDays, définissez le nombre de retainedBackups sur 8 pour le paramètre backupRetentionSettings.

Pour en savoir plus sur la récupération PITR, consultez Récupération à un moment précis (PITR).

Modèle de récupération de base de données pour la récupération PITR

Si vous activez la récupération PITR sur une instance, Cloud SQL définit automatiquement le modèle de récupération des bases de données existantes et futures sur le modèle de récupération complet.

Pour en savoir plus sur les modèles de récupération SQL Server, consultez la documentation Microsoft.

Activer la récupération PITR

Lorsque vous créez une instance dans la console Google Cloud, le paramètre de Sauvegardes automatiques est automatiquement activé.

La procédure suivante permet d'activer la récupération PITR sur une instance principale existante.

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Ouvrez le menu "Autres actions" Icône Plus au niveau de l'instance pour laquelle vous souhaitez activer la récupération PITR, puis cliquez sur Modifier.
  3. Sous Personnaliser votre instance, développez la section Protection des données.
  4. Cochez la case Activer la récupération à un moment précis.
  5. Dans le champ Jours de journaux, saisissez le nombre de jours de conservation des journaux, compris entre 1 et 35 pour l'édition Cloud SQL Enterprise Plus, ou entre 1 et 7 pour l'édition Cloud SQL Enterprise.
  6. Cliquez sur Enregistrer.
  1. Affichez la présentation de l'instance :
    gcloud sql instances describe INSTANCE_NAME
  2. Si la mention enabled: false s'affiche dans la section backupConfiguration, activez les sauvegardes planifiées :
    gcloud sql instances patch INSTANCE_NAME \
    --backup-start-time=HH:MM

    Spécifiez le paramètre backup-start-time au format 24 heures dans le fuseau horaire UTC ± 00.

  3. Activez la récupération PITR :
    gcloud sql instances patch INSTANCE_NAME \
    --enable-point-in-time-recovery

    Si vous activez la récupération PITR sur une instance principale, vous pouvez également configurer le nombre de jours pendant lesquels vous souhaitez conserver les journaux de transactions en ajoutant le paramètre suivant :

    --retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS
  4. Confirmez la modification :
    gcloud sql instances describe INSTANCE_NAME

    Dans la section backupConfiguration, vous voyez le message pointInTimeRecoveryEnabled: true s'afficher si la modification a réussi.

Pour activer la récupération PITR, utilisez une ressource Terraform.

Activer la récupération PITR pour l'édition Cloud SQL Enterprise Plus

Utilisez l'exemple de code Terraform suivant pour créer une instance Cloud SQL Enterprise Plus avec la récupération PITR activée:
# Creates a SQL SERVER Enterprise Plus edition instance. Unless specified otherwise, PITR is enabled by default.
resource "google_sql_database_instance" "enterprise_plus" {
  name             = "sqlserver-enterprise-plus-instance-pitr"
  region           = "asia-northeast1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    backup_configuration {
      enabled = true
    }
  }
  # Setting the `deletion_protection` flag to true ensures you can't accidentally delete the instance
  # using Terraform. Setting the `deletion_protection_enabled` flag to true protects the instance at the
  # Google Cloud level.
  deletion_protection = false
}

Activer la récupération à un moment précis pour l'édition Cloud SQL Enterprise

Utilisez l'exemple de code Terraform suivant pour créer une instance Cloud SQL Enterprise avec la récupération PITR activée:
# Creates a SQL SERVER Enterprise edition instance with PITR enabled. Unless specified otherwise,
# PITR is disabled by default.
resource "google_sql_database_instance" "enterprise" {
  name             = "sqlserver-enterprise-instance-pitr"
  region           = "asia-northeast1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier    = "db-custom-4-26624"
    edition = "ENTERPRISE"
    backup_configuration {
      enabled                        = true
      point_in_time_recovery_enabled = true
    }
  }
  # Setting the `deletion_protection` flag to true ensures you can't accidentally delete the instance
  # using Terraform. Setting the `deletion_protection_enabled` flag to true protects the instance at the
  # Google Cloud level.
  deletion_protection = false
}

Appliquer les modifications

Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.

    Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.

Préparer le répertoire

Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).

  1. Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.

    Copiez l'exemple de code dans le fichier main.tf que vous venez de créer.

    Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
    terraform init

    Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade :

    terraform init -upgrade

Appliquer les modifications

  1. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  2. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

  3. Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.

Supprimer les modifications

Pour supprimer vos modifications, procédez comme suit :

  1. Pour désactiver la protection contre la suppression, définissez l'argument deletion_protection sur false dans le fichier de configuration Terraform.
    deletion_protection =  "false"
  2. Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply
  1. Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant yes à la requête :

    terraform destroy

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_NAME : nom de l'instance principale ou de l'instance répliquée avec accès en lecture que vous configurez pour la haute disponibilité.
  • START_TIME : heure (en heures et en minutes).

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Corps JSON de la requête :

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "pointInTimeRecoveryEnabled": true
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_NAME : nom de l'instance principale ou de l'instance répliquée avec accès en lecture que vous configurez pour la haute disponibilité.
  • START_TIME : heure (en heures et en minutes).

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Corps JSON de la requête :

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "pointInTimeRecoveryEnabled": true
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

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

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Effectuer une récupération PITR

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Ouvrez le menu "Autres actions" Icône Plus pour l'instance que vous souhaitez récupérer, puis cliquez sur Créer un clone.
  3. Vous pouvez également mettre à jour l'ID du nouveau clone sur la page Créer un clone.
  4. Sélectionnez Cloner à partir d'un moment antérieur.
  5. Saisissez la date et l'heure de la récupération PITR.
  6. Sélectionnez Toutes les bases de données, ou spécifiez un nom de base de données.
    Si vous spécifiez un nom de base de données, vous ne pouvez en sélectionner qu'un. Par défaut, la récupération PITR est destinée à toutes les bases de données.
  7. Cliquez sur Create clone (Créer un clone).

Créez un clone à l'aide de la récupération PITR.

Remplacez les éléments suivants :

  • SOURCE_INSTANCE_NAME : nom de l'instance à partir de laquelle vous effectuez la restauration.
  • NEW_INSTANCE_NAME : nom du clone.
  • TIMESTAMP : fuseau horaire UTC de l'instance source au format RFC 3339. Exemple : 2012-11-15T16:19:00.094Z.
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time 'TIMESTAMP'

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID du projet
  • target-instance-id : ID de l'instance cible
  • source-instance-id : ID de l'instance source
  • restore-timestamp : moment jusqu'auquel effectuer la restauration

Dans la requête JSON, vous pouvez éventuellement spécifier un nom de base de données spécifique, comme suit : "databaseNames": "my-database"

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

Corps JSON de la requête :

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

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://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone"

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://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/target-instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "target-instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID du projet
  • target-instance-id : ID de l'instance cible
  • source-instance-id : ID de l'instance source
  • restore-timestamp : moment jusqu'auquel effectuer la restauration

Dans la requête JSON, vous pouvez éventuellement spécifier un nom de base de données spécifique, comme suit : "databaseNames": "my-database"

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone

Corps JSON de la requête :

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

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://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone"

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://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/target-instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "target-instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Désactiver la récupération PITR

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Ouvrez le menu "Autres actions" Icône Plus pour l'instance que vous souhaitez désactiver, puis sélectionnez Modifier.
  3. Sous Personnaliser votre instance, développez la section Protection des données.
  4. Désactivez l'option Activer la récupération à un moment précis.
  5. Cliquez sur Enregistrer.
  1. Désactivez la récupération à un moment précis :
    gcloud sql instances patch INSTANCE_NAME \
    --no-enable-point-in-time-recovery
  2. Confirmez la modification :
    gcloud sql instances describe INSTANCE_NAME

    Dans la section backupConfiguration, vous voyez le message pointInTimeRecoveryEnabled: false s'afficher si la modification a réussi.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID du projet
  • instance-id : ID de l'instance.

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Corps JSON de la requête :

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "pointInTimeRecoveryEnabled": false
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID du projet
  • instance-id : ID de l'instance.

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Corps JSON de la requête :

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "pointInTimeRecoveryEnabled": false
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Vérifier l'emplacement de stockage des journaux de transactions utilisés pour la récupération à un moment précis

Vous pouvez vérifier où votre instance Cloud SQL stocke les journaux de transactions utilisés pour la récupération à un moment précis.

gcloud

Pour déterminer si votre instance stocke les journaux de PITR sur le disque ou dans Cloud Storage, utilisez la commande suivante :

   gcloud sql instances describe INSTANCE_NAME
   

Remplacez INSTANCE_NAME par le nom de l'instance.

Pour plusieurs instances dans le même projet, vous pouvez également vérifier l'emplacement de stockage des journaux de transactions. Pour déterminer l'emplacement pour plusieurs instances, utilisez la commande suivante:

   gcloud sql instances list --show-transactional-log-storage-state
   

Exemple de réponse :

NAME  DATABASE_VERSION         LOCATION       TRANSACTIONAL_LOG_STORAGE_STATE
my_01 SQLSERVER_2019_STANDARD  us-central-1   DISK
my_02 SQLSERVER_2019_STANDARD  us-central-1   CLOUD_STORAGE
...
   

Dans le résultat de la commande, le champ transactionalLogStorageState ou la colonne TRANSACTIONAL_LOG_STORAGE_STATE fournissent des informations sur l'emplacement de stockage des journaux de transactions pour la récupération PITR associée à l'instance. Les états du stockage des journaux de transactions possibles sont les suivants :

  • DISK : l'instance stocke les journaux de transactions utilisés pour la récupération PITR sur le disque.
  • CLOUD_STORAGE: l'instance stocke les journaux de transactions utilisés pour la récupération à un moment précis dans Cloud Storage.

Définir la durée de conservation des journaux de transaction

Pour définir le nombre de jours de conservation des journaux de transaction, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Ouvrez le menu "Autres actions" Icône Plus pour l'instance pour laquelle vous souhaitez définir les journaux de transactions et sélectionnez Modifier.
  3. Sous Personnaliser votre instance, développez la section Protection des données.
  4. Dans la section Activer la récupération à un moment précis, développez Options avancées.
  5. Indiquez le nombre de jours de conservation des journaux, compris entre 1 et 35 pour l'édition Cloud SQL Enterprise Plus, ou entre 1 et 7 pour l'édition Cloud SQL Enterprise.
  6. Cliquez sur Enregistrer.

Modifiez l'instance pour définir le nombre de jours de conservation des journaux de transaction.

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance sur laquelle vous souhaitez définir les journaux de transactions.
  • DAYS_TO_RETAIN : quantité de journaux de transactions à conserver, exprimée en jours de conservation. Pour l'édition Cloud SQL Enterprise Plus, la plage valide est comprise entre 1 et 35 jours, avec une valeur par défaut de 14 jours. Pour l'édition Cloud SQL Enterprise, la plage valide est comprise entre 1 et 7 jours, avec une valeur par défaut de 7 jours.

    Si vous ne spécifiez pas de valeur, Cloud SQL utilise la valeur par défaut. Cette option n'est valide que si la récupération PITR est activée. Conserver les journaux de transactions sur un nombre de jours plus important nécessite une capacité de stockage plus importante.

  gcloud sql instances patch INSTANCE_NAME 
--retained-transaction-log-days=DAYS_TO_RETAIN

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet.
  • INSTANCE_ID : ID de l'instance.
  • DAYS_TO_RETAIN : quantité de journaux de transactions à conserver, exprimée en jours de conservation. Pour l'édition Cloud SQL Enterprise Plus, la plage valide est comprise entre 1 et 35 jours, avec une valeur par défaut de 14 jours. Pour l'édition Cloud SQL Enterprise, la plage valide est comprise entre 1 et 7 jours, avec une valeur par défaut de 7 jours.

    Si aucune valeur n'est spécifiée, la valeur par défaut est utilisée. Cette option n'est valide que si la récupération PITR est activée. Conserver les journaux de transactions sur un nombre de jours plus important nécessite une capacité de stockage plus importante.

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corps JSON de la requête :

{
  "settings":
  {
    "backupConfiguration":
    {
      "transactionLogRetentionDays": "DAYS_TO_RETAIN"
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

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

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet.
  • INSTANCE_ID : ID de l'instance.
  • DAYS_TO_RETAIN : quantité de journaux de transactions à conserver, exprimée en jours de conservation. Pour l'édition Cloud SQL Enterprise Plus, la plage valide est comprise entre 1 et 35 jours, avec une valeur par défaut de 14 jours. Pour l'édition Cloud SQL Enterprise, la plage valide est comprise entre 1 et 7 jours, avec une valeur par défaut de 7 jours.

    Si aucune valeur n'est spécifiée, la valeur par défaut est utilisée. Cette option n'est valide que si la récupération PITR est activée. Conserver les journaux de transactions sur un nombre de jours plus important nécessite une capacité de stockage plus importante.

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corps JSON de la requête :

{
  "settings":
  {
    "backupConfiguration":
    {
      "transactionLogRetentionDays": "DAYS_TO_RETAIN"
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

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

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Résoudre les problèmes

Problème Dépannage

argument --point-in-time: Failed to parse date/time:
Unknown string format: 2021-0928T30:54:03.094;
received: 2021-0928T30:54:03.094Z

OU

Invalid value at 'body.clone_context.point_in_time'
(type.googleapis.com/google.protobuf.Timestamp), Field 'pointInTime',
Invalid time format: Failed to parse input,

Le code temporel que vous avez fourni n'est pas valide.

HTTP Error 400: Successful backup required for carrying out the operation was not found.

OU

Successful backup required for carrying out the operation was not found. or Time where no backups can be found.

L'horodatage que vous avez fourni correspond à un moment où les sauvegardes ou les coordonnées du journal binaire sont introuvables.

Étapes suivantes