Présentation de la récupération à un moment précis (PITR)
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
La récupération à un moment précis (PITR, Point-in-time Recovery) de Spanner fournit une protection contre les suppressions ou les écritures accidentelles. Par exemple, si un opérateur écrit par inadvertance des données ou qu'un déploiement d'application corrompt la base de données, la récupération PITR vous permet de récupérer facilement les données à un moment antérieur précis (au maximum sept jours). Si vous souhaitez conserver des données à plus long terme, vous pouvez utiliser les fonctions Sauvegarder et restaurer ou Exporter et importer.
Par défaut, votre base de données conserve toutes les versions de ses données et de son schéma pendant une heure. Vous pouvez augmenter cette limite jusqu'à sept jours grâce à l'option version_retention_period. Pour obtenir des instructions, consultez Définir la période de conservation.
Spanner stocke les anciennes versions des données avec une précision de l'ordre de la microseconde et la base de données conserve un earliest_version_time, qui représente le point le plus récent auquel vous pouvez récupérer d'anciennes versions des données.
Méthodes de récupération des données
Il existe deux façons de récupérer des données :
Pour récupérer une partie de la base de données, effectuez une lecture non actualisée en spécifiant une condition de requête et un horodatage passé, puis écrivez à nouveau les résultats dans la base de données active. Cette méthode est généralement utilisée pour des opérations chirurgicales sur une base de données active. Par exemple, si vous supprimez accidentellement une ligne spécifique ou mettez à jour un sous-ensemble de données de manière incorrecte, vous pouvez les récupérer à l'aide de cette méthode. Pour obtenir des instructions, consultez la section Récupérer une partie de votre base de données.
Pour récupérer l'intégralité de la base de données, sauvegardez ou exportez la base de données en spécifiant un horodatage passé, puis restaurez-la ou importez-la dans une nouvelle base de données. Cette méthode est généralement utilisée pour résoudre les problèmes de corruption des données lorsque vous devez rétablir la base de données à un moment précis avant que la corruption ne se produise. Notez que la sauvegarde ou l'exportation d'une base de données peut prendre plusieurs heures et que vous ne pouvez pas restaurer ni importer de données dans une base de données existante. Pour obtenir des instructions, consultez Récupérer l'intégralité de la base de données.
Considérations sur les performances
Les bases de données dont les durées de conservation sont plus longues, en particulier celles qui écrasent fréquemment des données, utilisent davantage de ressources système. Cela peut affecter les performances de votre base de données, en particulier si votre instance n'est pas provisionnée avec une capacité de calcul suffisante. Si votre base de données a un taux d'écrasement très élevé (par exemple, si elle est écrasée plusieurs fois par jour), vous pouvez envisager d'augmenter progressivement la durée de conservation et de surveiller le système
Voici quelques points à noter :
Augmentation de l'utilisation de l'espace de stockage Nous vous recommandons de configurer des alertes de stockage pour vous assurer de ne pas dépasser la limite de stockage. Lorsque vous augmentez la durée de conservation, gardez à l'esprit que l'utilisation de l'espace de stockage augmentera progressivement à mesure que la base de données accumule des versions plus anciennes des données. Cela est dû au fait que les anciennes données qui auraient expiré en vertu de la période de conservation précédente ne sont plus expirées. Ainsi, si vous augmentez la durée de conservation de trois à sept jours, vous devez attendre quatre jours pour que l'utilisation de l'espace de stockage de la base de données se stabilise. Nous fournissons également des instructions pour estimer l'augmentation de l'espace de stockage.
Augmentation de l'utilisation du processeur et de la latence Spanner utilise des ressources de calcul supplémentaires pour compacter et conserver les anciennes versions des données.
Surveillez votre instance et votre base de données pour vous assurer que la latence et l'utilisation du processeur restent à des niveaux acceptables.
L'utilisation de la récupération à un moment donné n'entraîne pas de frais supplémentaires. Toutefois, si vous augmentez la période de conservation des versions de votre base de données au-delà de la durée par défaut d'une heure, les coûts de stockage et de capacité de calcul de votre base de données peuvent augmenter. Le coût de votre sauvegarde à la demande n'est pas affecté, car une seule version de votre base de données est stockée. Pour en savoir plus, consultez la section Considérations sur les performances. Avant d'augmenter la durée de conservation de la version d'une base de données, vous pouvez estimer l'augmentation prévue de l'espace de stockage de la base de données.
Pour obtenir des informations générales sur la facturation de Spanner, consultez la page Tarifs de Spanner.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/10 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/10 (UTC)."],[],[],null,["# Point-in-time recovery (PITR) overview\n\nSpanner point-in-time recovery (PITR) provides protection against\naccidental deletion or writes. For example, if an operator inadvertently writes\ndata or an application rollout corrupts the database, with PITR you can recover\nthe data from a point-in-time in the past (up to a maximum of seven days)\nseamlessly. If you need longer-term retention of data, you can use either\n[Backup and Restore](/spanner/docs/backup) or [Export and Import](/spanner/docs/export).\n\nBy default, your database retains all versions of its data and schema for one\nhour. You can increase this time limit to as long as seven days through the\n[`version_retention_period`](/spanner/docs/reference/rest/v1/projects.instances.databases#Database.FIELDS.version_retention_period)\noption. For instructions, see [Set the retention period](/spanner/docs/use-pitr#set-period).\nSpanner stores earlier versions of data at microsecond granularity and the\ndatabase maintains an [`earliest_version_time`](/spanner/docs/reference/rest/v1/projects.instances.databases#Database.FIELDS.earliest_version_time),\nwhich represents the earliest time in the past that you can recover earlier versions\nof the data.\n| **Note:** PITR provides additional insurance against logical data corruption, but does not protect you in case a user accidentally deletes the database. Make sure that you have other recovery options in place and that access to roles that include the [`spanner.databases.drop`](/spanner/docs/iam#databases) permission are set appropriately. For more information, see [Using IAM securely](/iam/docs/using-iam-securely). You can also enable [database deletion protection](/spanner/docs/prevent-database-deletion) to prevent the accidental deletions of databases.\n\nWays to recover data\n--------------------\n\nThere are two ways to recover data:\n\n- To **recover a portion of the database** , perform a [stale read](/spanner/docs/reads#perform-stale-read)\n specifying a query-condition and timestamp in the past, and then write the\n results back into the live database. This is typically used for surgical\n operations on a live database. For example, if you accidentally delete a\n particular row or incorrectly update a subset of data, you can recover it\n with this method. For instructions, see [recovering a portion of your database](/spanner/docs/use-pitr#recover-portion).\n\n- To **recover the entire database** , [backup](/spanner/docs/backup) or\n [export](/spanner/docs/export) the database specifying a timestamp in the\n past and then restore or import it to a new database. This is typically used\n to recover from data corruption issues when you have to revert the\n database to a point-in-time before the corruption occurred. Note that\n backing up or exporting a database could take several hours and that you\n cannot restore or import to an existing database. For instructions, see\n [recovering the entire database](/spanner/docs/use-pitr#recover-entire).\n\nPerformance considerations\n--------------------------\n\nDatabases with longer retention periods and, in particular, those that\nfrequently overwrite data, use more system resources. This can affect how your\ndatabase performs, especially if your instance is not provisioned with enough\n[compute capacity](/spanner/docs/compute-capacity). If your database has a very high overwrite rate\n(for example, if your database is overwritten multiple times per day), you might\nconsider increasing the retention period gradually and\n[monitoring the system](/spanner/docs/monitoring-cloud#storage).\nHere are some things to be aware of:\n\n- **Increased storage utilization** . We recommend setting up\n [storage alerts](/spanner/docs/storage-utilization#alerts) to ensure that you\n don't exceed the [storage limit](/spanner/quotas#database_limits). When you\n increase the retention period, keep in mind that storage usage will increase\n gradually as the database accumulates earlier versions of data. This is because\n the old data that would have expired under the previous retention period, is no\n longer expired. So, for example, if you increase the retention period from 3\n days to 7 days, you need to wait for 4 days for database storage usage to\n stabilize. We also provide instructions for\n [estimating the storage increase](/spanner/docs/use-pitr#estimate-storage).\n\n- **Increased CPU usage and latency** . Spanner uses additional computing\n resources to compact and maintain earlier versions of data.\n [Monitor your instance and database](/spanner/docs/monitoring-console#view-current-status)\n to ensure that latency and CPU utilization remain at acceptable levels.\n\n- **Increased time to perform schema updates** . An increased retention period\n means that [schema versions](/spanner/docs/schema-updates#schema_versions_created_during_schema_updates)\n must be retained for longer durations potentially causing schema updates to be\n [`throttled`](/spanner/docs/reference/rest/v1/UpdateDatabaseDdlMetadata#FIELDS.throttled) while\n waiting for server resources. Make sure that you are following\n [best practices for schema updates](/spanner/docs/schema-updates#best-practices)\n and staying within the [limits for schema updates](/spanner/docs/schema-updates#frequency).\n\nPricing\n-------\n\nThere is no additional charge for using PITR. However, if you\nincrease the version retention period of your database from the default one hour,\nyour database storage and compute capacity costs might increase. Your on-demand\n[backup](/spanner/docs/backup) cost is unaffected because only a single version\nof your database is stored. For more information, see the [Performance\nconsiderations](#performance) section. Before increasing a database's version\nretention period, you can [estimate the expected increase in database storage](/spanner/docs/use-pitr#estimate-storage).\n\nFor general information about how Spanner is charged, see\n[Spanner pricing](/spanner/pricing).\n\nWhat's next\n-----------\n\n- Learn more about how to [recover data with PITR](/spanner/docs/use-pitr)."]]