IP Library Granted Patent US 11,561,864
Granted Patent B1
US 11,561,864 · App. 16/831,651 · Granted Jan 24, 2023

Creating database clones at a specified point-in-time

Inventors: Murali Brahmadesam (Bengaluru, IN); Changan Han (Kirkland, WA); Raman Mittal (Seattle, WA); Seungmin Wei (Bellevue, WA)
Assignee: Amazon Technologies, Inc.
G06F11/1464G06F11/1451G06F11/1469G06F11/1471G06F16/1734G06F16/1844G06F16/27G06F2201/80G06F2201/84
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,561,864
App. No.
16/831,651
Filed
Mar 26, 2020
Granted
Jan 24, 2023
Kind
B1
Art Unit
2167
USPC
707/644
Abstract

A point-in-time clone may be created for a database. A request to create the point-in-time clone may be received. The clone may be provided with access to a storage for the database that stores a history of modifications to the database applicable to return data of the database according to a state of the data at the specified point in time. The clone may then be updated so that the updates made to the clone are stored for subsequent access by the clone.

Claims (60)

1. A system, comprising:

one or more nodes, respectively comprising a processor and a memory, that implement a database system, the database system configured to:

receive a request to create a clone of a database at a specified point-in-time, wherein the database system continues to accept modifications to the database requested after the receipt of the request to create the clone at a first database engine head node;

provision a second database engine head node of a second database engine of the database with access to a storage for the database, the storage accessible to the first database engine head node and the second database engine head node to create the clone of the database, wherein the storage logs modifications to the database applicable to return data of the database according to a state of the data of the database at the specified point-in-time;

receive, at the second database engine, one or more requests to modify the clone of the database; and

update, by the second database engine head node, the state of the data of the database at the specified point-in-time in the storage according to the one or more requests, wherein the updated state of the data is stored for the second database engine head node to access instead of the requested modifications to the clone of the database requested after the point-in-time.

2. The system of claim 1 , wherein to provision the second database engine head node to be the clone of the database, the database system is configured to:

identify a range of the logged modifications to preserve for a clone volume to provide access to the database for the clone at the specified point-in-time; and

mount the clone volume at the second database engine head node to make the clone ready for accepting access requests to the clone of the database.

3. The system of claim 1 , wherein to update the state of the data at the specified point-in-time in the storage according to the one or more requests, the database system is configured to:

cause a version of a data page that is shared with a source database volume to be created from a shared data page and one or more log records in the source database volume that describe the modifications to the database;

cause the modification to be applied to the version of the data page; and

store the modified data page as part of a clone volume for the clone.

4. The system of claim 1 , wherein the database system is further configured to:

receive a request to read from the clone of the database at the second database engine head node; and

send, from the second database engine head node, a request to read a data page from a clone volume for the clone that references a data page stored for a source database volume for the database.

5. A method, comprising:

receiving, at a database system, a request to create a clone of a database at a specified point-in-time, wherein the database system continues to accept modifications to the database requested after receiving the request to create the clone;

providing, by the database system, access to a storage for the database that stores a history of modifications to the database applicable to return data of the database according to a state of the data at the specified point-in-time to create the clone of the database; and

responsive to one or more requests to modify the clone of the database, updating, by the database system, the state of the data at the specified point-in-time in the storage according to the one or more requests, wherein the updated state of the data is stored for the clone to access instead of the accepted modifications to the clone of the database requested after the point-in-time.

6. The method of claim 5 , further comprising creating the clone of the database, wherein the creating comprises:

identifying a range of the history of modifications to preserve at the storage for a clone volume to provide access to the database for the clone at the specified point-in-time; and

mounting the clone volume at a database engine for the clone to make the clone ready for accepting access requests to the clone of the database.

7. The method of claim 6 , further comprising:

before creating the clone of the database, determining that the specified point-in-time is within a history window for creating clones of the database.

8. The method of claim 5 , further comprising:

receiving, at the database system, a request to read from the clone of the database; and

reading, by the database system, a data page from a clone volume for the clone that references a data page stored for a source database volume for the database.

9. The method of claim 5 , wherein the clone is a second clone of the database, wherein a first clone of the database was created at a different specified point-in-time.

10. The method of claim 5 , further comprising:

responsive to a request to delete the database, deleting the source volume of the database without deleting portions of the source database volume referenced by the clone volume.

11. The method of claim 5 , wherein the updating the state of the data at the specified point-in-time in the storage comprises:

causing a version of a data page that is shared with a source database volume to be created from a shared data page and one or more log records in the source database volume that describe the modifications to the database;

causing the modification to be applied to the version of the data page; and

storing the modified data page as part of a clone volume for the clone.

12. The method of claim 11 , further comprising:

receiving, by the database system, another request to modify the clone;

determining, by the database system, that the other request is another modification to the modified data page; and

causing, by the database system, the other modification of the other request to be applied to the modified data page stored in the clone volume.

13. The method of claim 5 , wherein the storage for the database is a distributed storage system that stores multiple different shards of the database, and wherein providing the clone of the database with access to the storage for the database provides access to the multiple different shards of the database according to the state of the data at the specified point-in-time for the clone.

14. One or more non-transitory, computer-readable storage media, storing program instructions that when executed on or across one or more computing devices cause the one or more computing devices to implement a database system that implements:

receiving a request to create a clone of a database at a specified point-in-time, wherein the database system continues to accept modifications to the database requested after receiving the request to create the clone;

providing access to a storage for the database that stores a history of modifications to the database applicable to return data of the database according to a state of the data at the specified point-in-time to create the clone of the database;

receiving one or more requests to modify the clone of the database; and

updating the state of the data at the specified point-in-time in the storage according to the one or more requests, wherein the updated state of the data is stored for the clone to access instead of the accepted modifications to the clone of the database requested after the point-in-time.

15. The one or more non-transitory, computer-readable storage media of claim 14 , storing further instructions that when executed by the one or more computing devices cause the one or more computing devices to further implement:

before creating the clone of the database, determining that creating the clone does not exceed a maximum number of clones for the database.

16. The one or more non-transitory, computer-readable storage media of claim 14 , wherein, in the updating the state of the data at the specified point-in-time in the storage, the program instructions cause the one or more computing devices to implement:

causing a version of a data page that is shared with a source database volume to be created from a shared data page and one or more log records in the source database volume that describe the modifications to the database;

causing the modification to be applied to the version of the data page; and

storing the modified data page as part of a clone volume for the clone.

17. The one or more non-transitory, computer-readable storage media of claim 14 , storing further instructions that when executed by the one or more computing devices cause the one or more computing devices to further implement:

receiving a request to read from the clone of the database; and

reading a data page from a clone volume for the clone that references a data page stored for a source database volume for the database.

18. The one or more non-transitory, computer-readable storage media of claim 14 , wherein, in creating the clone of the database, the program instructions cause the one or more computing devices to implement:

identifying a range of the history of modifications to preserve for a clone volume to provide access to the database for the clone at the specified point-in-time; and

mounting the clone volume at a database engine for the clone to make the clone ready for accepting access requests to the clone of the database.

19. The one or more non-transitory, computer-readable storage media of claim 18 , storing further instructions that when executed by the one or more computing devices cause the one or more computing devices to further implement:

responsive to a request to delete the clone of the database, deleting the clone volume of the database without deleting portions of a source database volume referenced by the clone volume.

20. The one or more non-transitory, computer-readable storage media of claim 14 , wherein the database system is a database service implemented as part of a provider network, wherein the storage is a storage service implemented as part of the provider network, and wherein providing the clone of the database with access to the storage comprises mounting a clone volume created in the storage service for the clone of the database.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2020
From: BRAHMADESAM, MURALI; HAN, CHANGAN; MITTAL, RAMAN; WEI, SEUNGMIN
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 052254/0273 →
Cited By (11)
US 12,306,819 US 12,443,587 US 12,481,638 US 12,517,865 US 12,572,559 US 12,613,857 US 12,657,097 US 12,693,939 US 12,693,999 US 12,699,685 US 12,730,914