IP Library Granted Patent US 11,809,385
Granted Patent B1
US 11,809,385 · App. 17/843,268 · Granted Nov 7, 2023

Efficient data backup in a distributed storage system

Inventors: Alfred R. K. Fuller (San Carlos, CA); Arie Ozarov (San Francisco, CA)
Assignee: Google LLC
G06F16/21
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,809,385
App. No.
17/843,268
Granted
Nov 7, 2023
Kind
B1
Abstract

A method and a server system for creating consistent snapshots in a distributed storage system are disclosed. The server system stores entities in databases that includes a production portion for storing current versions of entities and a backup portion for storing backup versions of modified entities, receives a request for a snapshot of a portion of the databases at a predefined snapshot time. In response to the request, the server system generates a snapshot of the databases, the snapshot including: a backup version of an entity retrieved from the backup portion and a current version of another entity retrieved from the databases and produces a response to the request based on the snapshot. When there are several backup portions, a backup portion may be used separately or in conjunction with other backup portions to provide required backup versions to generate a snapshot.

Claims (77)

1. A method comprising:

receiving, by one or more processors, a request for a snapshot of data stored in one or more databases, the snapshot having a snapshot time;

determining, by the one or more processors, that an amount of time that has elapsed since the snapshot time is less than a safe age;

delaying, by the one or more processors, generation of the snapshot until the amount of time that has elapsed since the snapshot time is greater than the safe age; and

generating, by the one or more processors, the snapshot, the snapshot comprising:

a version of first data stored in the one or more databases before the snapshot time and last modified after the snapshot time; and

a version of second data stored in the one or more databases after the snapshot time and that has not been modified since the snapshot time.

2. The method of claim 1 , further comprising storing, by the one or more processors, a plurality of entities in a set of one or more databases, the set of one or more databases including a production portion for storing current versions of entities and a backup portion for storing backup versions of modified entities.

3. The method of claim 2 , further comprising:

at a time prior to the snapshot time, storing, by the one or more processors, a snapshot timestamp corresponding to the snapshot time; and

at a time after the snapshot time:

receiving, by the one or more processors, a request to modify a respective entity, wherein the respective entity was last modified prior to the snapshot time; and

in response to the request to modify the respective entity:

storing, by the one or more processors, a backup version of the respective entity in the backup portion of the set of one or more databases; and

modifying, by the one or more processors, the respective entity in the production portion of the set of one or more databases.

4. The method of claim 2 , wherein the snapshot includes data for multiple entities, including data from the backup portion but not the production portion for entities last modified after the snapshot time, and data from the production portion but not the backup portion for entities last modified before the snapshot time.

5. The method of claim 2 , further comprising while processing the request:

receiving, by the one or more processors, a request to modify a second entity that was last modified prior to the snapshot time; and

in response to the request to modify the second entity:

storing, by the one or more processors, a backup version of the second entity in the backup portion of the set of one or more databases; and

modifying, by the one or more processors, the second entity in the production portion of the set of one or more databases.

6. The method of claim 5 , wherein:

a backup version of a first entity is stored prior to processing the request for the snapshot; and

the snapshot includes the backup version of the second entity that is modified while processing the request for the snapshot.

7. The method of claim 1 , wherein:

the set of one or more databases are distributed over a set of database servers; and

the method further comprises, at a time prior to the snapshot time, receiving, from another database server of the set of database servers, a snapshot timestamp corresponding to the snapshot time, wherein the snapshot timestamp is generated in response to a request to store the snapshot.

8. The method of claim 1 , further comprising, prior to receiving the request for the snapshot:

receiving, by the one or more processors, a request to store the snapshot; and

in response to the request to store the snapshot, generating, by the one or more processors, a snapshot timestamp corresponding to the snapshot time.

9. The method of claim 8 , wherein:

the set of one or more databases is distributed over a set of database servers;

the request to store the snapshot is generated at a snapshot-timestamp-generation time; and

the method further comprises, after generating the snapshot timestamp, distributing, by the one or more processors, the snapshot timestamp to one or more other servers, wherein a time interval between the snapshot-timestamp-generation time and the snapshot time is greater than an amount of time required to distribute the snapshot timestamp to the other servers.

10. A system; comprising one or more processors configured to:

receive a request for a snapshot of data stored in one or more databases, the snapshot having a snapshot time;

determine that an amount of time that has elapsed since the snapshot time is less than a safe age;

delay generation of the snapshot until the amount of time that has elapsed since the snapshot time is greater than the safe age; and

generate the snapshot, the snapshot comprising:

a version of first data stored in the one or more databases before the snapshot time and last modified after the snapshot time; and

a version of second data stored in the one or more databases after the snapshot time and that has not been modified since the snapshot time.

11. The system of claim 10 , wherein the one or more processors are further configured to store a plurality of entities in a set of one or more databases, the set of one or more databases including a production portion for storing current versions of entities and a backup portion for storing backup versions of modified entities.

12. The system of claim 11 , wherein the one or more processors are further configured to:

at a time prior to the snapshot time, store a snapshot timestamp corresponding to the snapshot time; and

at a time after the snapshot time:

receive a request to modify a respective entity, wherein the respective entity was last modified prior to the snapshot time; and

in response to the request to modify the respective entity:

store a backup version of the respective entity in the backup portion of the set of one or more databases; and

modify the respective entity in the production portion of the set of one or more databases.

13. The system of claim 11 , wherein the snapshot includes data for multiple entities, including data from the backup portion but not the production portion for entities last modified after the snapshot time, and data from the production portion but not the backup portion for entities last modified before the snapshot time.

14. The system of claim 11 , wherein the one or more processors are further configured to:

while processing the request:

receive a request to modify a second entity that was last modified prior to the snapshot time; and

in response to the request to modify the second entity:

store a backup version of the second entity in the backup portion of the set of one or more databases; and

modify the second entity in the production portion of the set of one or more databases.

15. The system of claim 14 , wherein:

a backup version of a first entity is stored prior to processing the request for the snapshot; and

the snapshot includes the backup version of the second entity that is modified while processing the request for the snapshot.

16. The system of claim 10 , wherein:

the set of one or more databases are distributed over a set of database servers; and

the one or more processors are further configured to, at a time prior to the snapshot time, receive, from another database server of the set of database servers, a snapshot timestamp corresponding to the snapshot time, wherein the snapshot timestamp is generated in response to a request to store the snapshot.

17. The system of claim 10 , wherein the one or more processors are further configured to, prior to receiving the request for the snapshot:

receive a request to store the snapshot; and

in response to the request to store the snapshot, generate a snapshot timestamp corresponding to the snapshot time.

18. The system of claim 17 , wherein:

the set of one or more databases is distributed over a set of database servers;

the request to store the snapshot is generated at a snapshot-timestamp-generation time; and

the one or more processors are further configured to, after generating the snapshot timestamp, distribute the snapshot timestamp to one or more other servers, wherein a time interval between the snapshot-timestamp-generation time and the snapshot time is greater than an amount of time required to distribute the snapshot timestamp to the other servers.

19. One or more non-transitory computer readable storage media storing one or more programs, the one or more programs comprising instructions, which when executed by one or more processors, cause the one or more processors to perform operations comprising:

receiving a request for a snapshot of data stored in one or more databases, the snapshot having a snapshot time;

determining that an amount of time that has elapsed since the snapshot time is less than a safe age;

delaying generation of the snapshot until the amount of time that has elapsed since the snapshot time is greater than the safe age; and

generating the snapshot, the snapshot comprising:

a version of first data stored in the one or more databases before the snapshot time and last modified after the snapshot time; and

a version of second data stored in the one or more databases after the snapshot time and that has not been modified since the snapshot time.

20. The one or more non-transitory computer readable storage media of claim 19 , wherein the operations further comprise storing a plurality of entities in a set of one or more databases, the set of one or more databases including a production portion for storing current versions of entities and a backup portion for storing backup versions of modified entities.

Assignments (2)
CHANGE OF NAME Recorded Jul 7, 2022
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 060611/0767 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2022
From: FULLER, ALFRED R.K.; OZAROV, ARIE
To: GOOGLE INC.
Reel/Frame 060272/0537 →
Continuity (2)
Continuation 14051420 · Oct 10, 2013
Provisional Application 61714136 · Oct 15, 2012