IP Library Granted Patent US 11,675,674
Granted Patent B2
US 11,675,674 · App. 17/734,280 · Granted Jun 13, 2023

Instant recovery of databases

Inventors: Joshua Duncan Hight (San Francisco, CA); Jiangbin Luo (Palo Alto, CA); Christopher Wong (Mountain View, CA)
Assignee: Rubrik, Inc.
G06F11/1469G06F2201/80
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 11,675,674
App. No.
17/734,280
Granted
Jun 13, 2023
Kind
B2
Abstract

An example method of restoring a database includes obtaining information about backup data of a database from a source storage separate from a compute infrastructure. The information includes a list of data blocks of a file, transferring the data blocks on the list from the source storage to a local storage on the compute infrastructure, and tracking which data blocks of the file have been transferred from the source storage to the local storage concurrently when transferring the data blocks.

Claims (62)

1. A method, comprising:

obtaining, as part of a restoration procedure for a database that is stored at a first storage location, information about backup data stored for the database at a second storage location, the information including a list of data blocks of a file of the database;

transferring, as part of the restoration procedure, data blocks on the list of data blocks from the second storage location to the first storage location;

intercepting, during the restoration procedure, a read command for a data block of the data blocks, the read command directed to the first storage location;

determining, during the restoration procedure and based at least in part on intercepting the read command, whether the data block has been transferred from the second storage location to the first storage location;

redirecting, during the restoration procedure, the intercepted read command to the second storage location based at least in part on determining that a transfer of the data block from the second storage location to the first storage location is pending; and

reading, during the restoration procedure, the data block from the second storage location as a result of redirecting the intercepted read command to the second storage location.

2. The method of claim 1 , wherein:

determining whether the data block has been transferred from the second storage location to the first storage location comprises determining that the data block has not been transferred to the first storage location.

3. The method of claim 2 , further comprising:

intercepting, during the restoration procedure and after intercepting the read command, a second read command for the data block;

determining, based at least in part on intercepting the second read command, whether the data block has been transferred from the second storage location to the first storage location; and

reading, in response to the second read command and during the restoration procedure, the data block from the first storage location based at least in part on determining that the data block has been transferred to the first storage location.

4. The method of claim 3 , further comprising:

creating, as part of the restoration procedure, a bitmap for the file, each bit of the bitmap corresponding to a respective data block of the data blocks on the list of data blocks and indicating whether the respective data block has been transferred from the second storage location to the first storage location; and

marking, based at least in part on determining that the data block has been transferred from the second storage location to the first storage location, a bit of the bitmap corresponding to the data block to indicate that the data block has been transferred from the second storage location to the first storage location, wherein, in response to the second read command, the data block is determined as having been transferred from the second storage location to the first storage location based at least in part on the bit of the bitmap indicating that the data block has been transferred from the second storage location to the first storage location.

5. The method of claim 1 , further comprising:

intercepting, during the restoration procedure, a write command for a second data block of the data blocks; and

writing, in response to the write command and during the restoration procedure, data for the second data block to the first storage location regardless of whether the second data block has been transferred to the first storage location.

6. The method of claim 5 , further comprising:

creating, as part of the restoration procedure, a bitmap for the file, each bit of the bitmap corresponding to a respective data block of the data blocks on the list of data blocks and indicating whether the respective data block has been transferred from the second storage location to the first storage location; and

marking, prior to writing the data for the second data block to the first storage location, a bit of the bitmap corresponding to the second data block to indicate that the second data block has been transferred from the second storage location to the first storage location.

7. The method of claim 6 , further comprising:

intercepting, during the restoration procedure, a second read command for the second data block; and

reading, in response to the second read command, the data block from the first storage location based at least in part on the bit of the bitmap indicating that the second data block has been transferred from the second storage location to the first storage location.

8. The method of claim 1 , further comprising:

initiating the restoration procedure for the database, wherein the information is obtained after initiating the restoration procedure.

9. The method of claim 1 , wherein:

a compute infrastructure runs a virtual machine that hosts the database,

the first storage location is implemented at the compute infrastructure and stores working data for the database, and

the second storage location is separate from the compute infrastructure.

10. The method of claim 1 , further comprising:

activating, based at least in part on initiating the restoration procedure, a configuration for determining whether to direct read commands to the first storage location or the second storage location, wherein determining whether the data block associated with the read command has been transferred to the first storage location is based at least in part on activating the configuration.

11. The method of claim 1 , further comprising:

recording, during the restoration procedure and concurrently with transferring the data blocks on the list of data blocks, a set of data blocks of the data blocks that have been transferred from the second storage location to the first storage location, wherein determining whether the data block has been transferred to the first storage location comprises determining whether the set of data blocks comprises the data block.

12. An apparatus, comprising:

a processor;

memory coupled with the processor; and

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

obtain, as part of a restoration procedure for a database that is stored at a first storage location, information about backup data stored for the database at a second storage location, the information including a list of data blocks of a file of the database;

transfer, as part of the restoration procedure, data blocks on the list of data blocks from the second storage location to the first storage location;

intercept, during the restoration procedure, a read command for a data block of the data blocks, the read command directed to the first storage location;

determine, during the restoration procedure and based at least in part on intercepting the read command, whether the data block has been transferred from the second storage location to the first storage location;

redirect, during the restoration procedure, the intercepted read command to the second storage location based at least in part on determining that a transfer of the data block from the second storage location to the first storage location is pending; and

read, during the restoration procedure, the data block from the second storage location as a result of redirecting the intercepted read command to the second storage location.

13. The apparatus of claim 12 , wherein to determine whether the data block has been transferred from the second storage location to the first storage location, the instructions are further executable by the processor to cause the apparatus to:

determine that the data block has not been transferred to the first storage location.

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

intercept, during the restoration procedure, a write command for a second data block of the data blocks; and

write, in response to the write command and during the restoration procedure, data for the second data block to the first storage location regardless of whether the second data block has been transferred to the first storage location.

15. A non-transitory, computer-readable medium storing code comprising instructions executable by a processor to:

obtain, as part of a restoration procedure for a database that is stored at a first storage location, information about backup data stored for the database at a second storage location, the information including a list of data blocks of a file of the database;

transfer, as part of the restoration procedure, data blocks on the list of data blocks from the second storage location to the first storage location;

intercept, during the restoration procedure, a read command for a data block of the data blocks, the read command directed to the first storage location;

determine, during the restoration procedure and based at least in part on intercepting the read command, whether the data block has been transferred from the second storage location to the first storage location;

redirect, during the restoration procedure, the intercepted read command to the second storage location based at least in part on determining that a transfer of the data block from the second storage location to the first storage location is pending; and

read, during the restoration procedure, the data block from the second storage location as a result of redirecting the intercepted read command to the second storage location.

16. The non-transitory, computer-readable medium of claim 15 , wherein, to determine whether the data block has been transferred from the second storage location to the first storage location, the instructions are further executable by the processor to:

determine that the data block has not been transferred to the first storage location.

17. The non-transitory, computer-readable medium of claim 15 , wherein the instructions are further executable by the processor to:

intercept, during the restoration procedure, a write command for a second data block of the data blocks; and

write, in response to the write command and during the restoration procedure, data for the second data block to the first storage location regardless of whether the second data block has been transferred to the first storage location.

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 May 2, 2022
From: HIGHT, JOSHUA DUNCAN; LUO, JIANGBIN; WONG, CHRISTOPHER
To: RUBRIK, INC.
Reel/Frame 059779/0497 →