IP Library Granted Patent US 12,411,866
Granted Patent B2
US 12,411,866 · App. 18/151,401 · Granted Sep 9, 2025

Database recovery time objective optimization with synthetic snapshots

Inventors: Christopher Wong (Mountain View, CA); Joshua Duncan Hight (San Francisco, CA); Biswaroop Palit (Redwood City, CA); Di Wu (Newark, CA)
Assignee: Rubrik, Inc.
G06F16/27
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,411,866
App. No.
18/151,401
Granted
Sep 9, 2025
Kind
B2
Abstract

Methods and systems for reducing the amount of time to restore a database or other application by dynamically generating and storing synthetic snapshots are described. When backing up a database, an integrated data management and storage system may acquire snapshots of the database at a snapshot frequency and acquire database transaction logs at a frequency that is greater than the snapshot frequency. In response to detecting that the database is unable to provide a database snapshot, the integrated data management and storage system may generate a synthetic snapshot of the database by instantiating a compatible version of the database locally, acquiring a previously stored snapshot of the database, applying data changes from one or more database transaction logs to the previously stored snapshot to generate the synthetic snapshot, and storing the synthetic snapshot of the database within the integrated data management and storage system.

Claims (58)

1. A method comprising:

acquiring, at a storage appliance, a first snapshot of a database from a server executing the database, wherein the first snapshot is of the database as of a first point in time, and wherein the server is separate from the storage appliance;

acquiring, at the storage appliance, one or more transaction logs for the database that indicate a set of data changes to the database between the first point in time and a second point in time subsequent to the first point in time, wherein the one or more transaction logs are acquired from the server at a frequency that is higher than a snapshot frequency for the database;

issuing a request, from the storage appliance to the server, that the server provide a second snapshot of the database, the requested second snapshot being of the database as of the second point in time;

detecting, by the storage appliance that is separate from the server, that the server is unable to provide the requested second snapshot of the database to the storage appliance within a threshold time interval for receipt of the second snapshot by the storage appliance, wherein the threshold time interval begins at a third time at which the storage appliance issues the request to the server to provide the second snapshot, and wherein the threshold time interval ends at a fourth time that is later than the third time;

determining, by the storage appliance, that a synthetic snapshot of the database is to be generated based at least in part on detecting that the server is unable to provide the second snapshot of the database to the storage appliance within the threshold time interval;

instantiating, by the storage appliance, a database engine to generate the synthetic snapshot for the database;

generating, by the storage appliance, the synthetic snapshot of the database using the database engine by applying the set of data changes to the first snapshot of the database;

terminating, by the storage appliance, the database engine after generating the synthetic snapshot using the database engine; and

storing, within the storage appliance, the synthetic snapshot of the database.

2. The method of claim 1 , further comprising:

determining, by the storage appliance, the snapshot frequency for acquiring snapshots of the database from the server, wherein acquiring the first snapshot of the database is in accordance with the snapshot frequency.

3. The method of claim 1 , wherein detecting that the server is unable to provide the second snapshot of the database includes determining a blackout window for the database in which snapshot acquisition from the database is prohibited and detecting that the second point in time is during the blackout window for the database.

4. The method of claim 3 , further comprising:

determining the database engine to instantiate based at least in part on a compatibility level for the database and the database engine.

5. The method of claim 1 , further comprising:

detecting that the server is unable to provide a third snapshot of the database at a third point in time subsequent to the second point in time;

acquiring one or more additional transaction logs for the database that include a second set of data changes to the database between the second point in time and the third point in time; and

generating the third snapshot of the database based at least in part on the second set of data changes and the synthetic snapshot of the database.

6. The method of claim 1 , wherein the one or more transaction logs for the database comprise a plurality of database transaction logs.

7. The method of claim 1 , wherein storing the synthetic snapshot of the database comprises storing the synthetic snapshot as an incremental snapshot.

8. The method of claim 1 , wherein the database comprises a relational database.

9. The method of claim 1 , further comprising:

detecting that a quantity of updates to the database between the first point in time and the second point in time has exceeded a threshold quantity of updates; and

outputting an alert specifying that a database anomaly has been detected.

10. An apparatus for data management, comprising:

a processor;

memory coupled with the processor; and

instructions stored in the memory and executable by the processor to cause the apparatus to:

acquire, at a storage appliance, a first snapshot of a database from a server executing the database, wherein the first snapshot is of the database as of a first point in time, and wherein the server is separate from the storage appliance;

acquire, at the storage appliance, one or more transaction logs for the database that indicate a set of data changes to the database between the first point in time and a second point in time subsequent to the first point in time, wherein the one or more transaction logs are acquired from the server at a frequency that is higher than a snapshot frequency for the database;

issue a request, from the storage appliance to the server, that the server provide a second snapshot of the database, the requested second snapshot being of the database as of the second point in time;

detect, by the storage appliance that is separate from the server, that the server is unable to provide the requested second snapshot of the database to the storage appliance within a threshold time interval for receipt of the second snapshot by the storage appliance, wherein the threshold time interval begins at a third time at which the storage appliance issues the request to the server to provide the second snapshot, and wherein the threshold time interval ends at a fourth time that is later than the third time;

determine, by the storage appliance, that a synthetic snapshot of the database is to be generated based at least in part on detecting that the server is unable to provide the second snapshot of the database to the storage appliance within the threshold time interval;

instantiate, by the storage appliance, a database engine to generate the synthetic snapshot for the database;

generate, by the storage appliance, the synthetic snapshot of the database using the database engine by applying the set of data changes to the first snapshot of the database;

terminate, by the storage appliance, the database engine after generating the synthetic snapshot using the database engine; and

store, within the storage appliance, the synthetic snapshot of the database.

11. The apparatus of claim 10 , wherein the instructions are further executable by the processor to cause the apparatus to:

determine, by the storage appliance, the snapshot frequency for capturing snapshots of the database from the server, wherein acquiring the first snapshot of the database is in accordance with the snapshot frequency.

12. The apparatus of claim 10 , wherein detecting that the server is unable to provide the second snapshot of the database includes determining a blackout window for the database in which snapshot acquisition from the database is prohibited and detecting that the second point in time is during the blackout window for the database.

13. The apparatus of claim 12 , wherein the instructions are further executable by the processor to cause the apparatus to:

determine the database engine to instantiate based at least in part on a compatibility level for the database and the database engine.

14. The apparatus of claim 10 , wherein the instructions are further executable by the processor to cause the apparatus to:

detect that the server is unable to provide a third snapshot of the database at a third point in time subsequent to the second point in time;

acquire one or more additional transaction logs for the database that include a second set of data changes to the database between the second point in time and the third point in time; and

generate the third snapshot of the database based at least in part on the second set of data changes and the synthetic snapshot of the database.

15. The apparatus of claim 10 , wherein the one or more transaction logs for the database comprise a plurality of database transaction logs.

16. A non-transitory computer-readable medium storing code for data management, the code comprising instructions executable by a processor to:

acquire, at a storage appliance, a first snapshot of a database from a server executing the database, wherein the first snapshot is of the database as of a first point in time, and wherein the server is separate from the storage appliance;

acquire, at the storage appliance, one or more transaction logs for the database that indicate a set of data changes to the database between the first point in time and a second point in time subsequent to the first point in time, wherein the one or more transaction logs are acquired from the server at a frequency that is higher than a snapshot frequency for the database;

issue a request, from the storage appliance to the server, that the server provide a second snapshot of the database, the requested second snapshot being of the database as of the second point in time;

detect, by the storage appliance that is separate from the server, that the server is unable to provide the requested second snapshot of the database to the storage appliance within a threshold time interval for receipt of the second snapshot by the storage appliance, wherein the threshold time interval begins at a third time at which the storage appliance issues the request to the server to provide the second snapshot, and wherein the threshold time interval ends at a fourth time that is later than the third time;

determine, by the storage appliance, that a synthetic snapshot of the database is to be generated based at least in part on detecting that the server is unable to provide the second snapshot of the database to the storage appliance within the threshold time interval;

instantiate, by the storage appliance, a database engine to generate the synthetic snapshot for the database;

generate, by the storage appliance, the synthetic snapshot of the database using the database engine by applying the set of data changes to the first snapshot of the database;

terminate, by the storage appliance, the database engine after generating the synthetic snapshot using the database engine; and

store, within the storage appliance, the synthetic snapshot of the database.

Assignments (3)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 64659/0236 Recorded Jun 13, 2025
From: GOLDMAN SACHS BDC, INC., AS COLLATERAL AGENT
To: RUBRIK, INC.
Reel/Frame 071566/0187 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Aug 21, 2023
From: RUBRIK, INC.
To: GOLDMAN SACHS BDC, INC., AS COLLATERAL AGENT
Reel/Frame 064659/0236 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 15, 2023
From: WONG, CHRISTOPHER; HIGHT, JOSHUA DUNCAN; PALIT, BISWAROOP; WU, DI
To: RUBRIK, INC.
Reel/Frame 062713/0256 →
Continuity (2)
Continuation 16264628 · Jan 31, 2019
Related Publication 20230153322A1 · May 18, 2023
References Cited (34)
US 7111026B2 · Sato · 2006 [cited by applicant]
US 7225210B2 · Guthrie, II · 2007 [cited by applicant]
US 7305421B2 · Cha et al. · 2007 [cited by applicant]
US 8041679B1 · Narayanan · 2011 [cited by applicant]
US 8732417B1 · Stringham · 2014 [cited by applicant]
US 9037543B2 · Zha et al. · 2015 [cited by applicant]
US 9191380B2 · Anderson · 2015 [cited by examiner]
US 9201746B2 · Fashchik · 2015 [cited by examiner]
US 9547560B1 · Lee · 2017 [cited by applicant]
US 9547834B2 · Nayyar · 2017 [cited by examiner]
US 9558072B1 · Mam · 2017 [cited by applicant]
US 9613104B2 · Smith et al. · 2017 [cited by applicant]
US 9639430B2 · Peretz et al. · 2017 [cited by applicant]
US 9703640B2 · Beatty et al. · 2017 [cited by applicant]
US 11442817B2 · Wu · 2022 [cited by examiner]
US 11561999B2 · Wong et al. · 2023 [cited by applicant]
US 20030093444A1 · Huxoll · 2003 [cited by examiner]
US 20030220935A1 · Vivian · 2003 [cited by examiner]
US 20050216462A1 · Xiao · 2005 [cited by examiner]
US 20070067586A1 · Mikami · 2007 [cited by examiner]
US 20070233756A1 · D'Souza et al. · 2007 [cited by applicant]
US 20080162590A1 · Kundu · 2008 [cited by examiner]
US 20080243954A1 · Augenstein et al. · 2008 [cited by applicant]
US 20100049929A1 · Nagarkar et al. · 2010 [cited by applicant]
US 20100169284A1 · Walter et al. · 2010 [cited by applicant]
US 20140068040A1 · Neti et al. · 2014 [cited by applicant]
US 20140108352A1 · Ahrens et al. · 2014 [cited by applicant]
US 20160034481A1 · Kumarasamy et al. · 2016 [cited by applicant]
US 20160077923A1 · Zhang et al. · 2016 [cited by applicant]
US 20160170837A1 · Hoobler et al. · 2016 [cited by applicant]
US 20170206144A1 · Ahn · 2017 [cited by examiner]
US 20200210378A1 · Kuchibhotla · 2020 [cited by examiner]
US 20220100559A1 · Zhang · 2022 [cited by examiner]
U.S. Appl. No. 16/264,628, filing Jan. 31, 2019, Issued, U.S. Pat. No. 11,561,999. [cited by applicant]