IP Library Granted Patent US 10,049,115
Granted Patent B1
US 10,049,115 · App. 13/835,472 · Granted Aug 14, 2018

Systems and methods for performing incremental database backups

Inventors: Michael Payne (Archer, FL); Steven Devos (Mercer Island, WA)
Assignee: Veritas Technologies LLC
G06F17/30129
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 10,049,115
App. No.
13/835,472
Granted
Aug 14, 2018
Kind
B1
Abstract

A computer-implemented method for performing incremental database backups may include (1) identifying a request to perform a block-level incremental backup of a database, the block-level incremental backup including data that has changed within the database since a previous block-level incremental backup of the database, (2) requesting, in response to the request, a differential backup stream from a database server of the database, (3) creating an incremental backup stream from the differential backup stream at least in part by removing at least one database block from the differential backup stream that has not changed since the previous block-level incremental backup and (4) forwarding the incremental backup stream to a backup location to create the block-level incremental backup. Various other methods, systems, and computer-readable media are also disclosed.

Claims (50)

1. A computer-implemented method for performing incremental database backups, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying a request to perform a block-level incremental backup of a database, the block-level incremental backup comprising data that has changed within the database during a first span of time beginning at a previous block-level incremental backup of the database and omitting data that has not changed within the database during the first span of time beginning at the previous block-level incremental backup of the database;

issuing an additional request, in response to the request, for a differential backup stream from a database server of the database, the differential backup stream comprising data that has changed within the database during an overall span of time beginning at a most recent full backup, the most recent full backup having occurred prior to the previous block-level incremental backup, and omitting data that has not changed within the database during the overall span of time beginning at the most recent full backup;

creating an incremental backup stream from the differential backup stream that comprises data that has changed during the overall span of time at least in part by removing at least one database block from the differential backup stream that has changed during the overall span of time but that has not changed during the first span of time;

forwarding the incremental backup stream to a backup location to create the block-level incremental backup.

2. The computer-implemented method of claim 1 , wherein removing the database block from the differential backup stream comprises inspecting content of the database block to determine that the database block has not changed since the previous block-level incremental backup.

3. The computer-implemented method of claim 1 , wherein removing the database block from the differential backup stream comprises inspecting a control block within the differential backup stream to determine that the database block has not changed since the previous block-level incremental backup.

4. The computer-implemented method of claim 1 , wherein removing the database block from the differential backup stream comprises:

inspecting the database block to identify a unique identifier of the database block;

inspecting the database block to identify an ordered identifier of the database block that indicates a place within a sequence at which the database block was changed;

determining that a past ordered identifier of the database block matches the ordered identifier of the database block.

5. The computer-implemented method of claim 4 , wherein determining that the past ordered identifier of the database block matches the ordered identifier of the database block comprises:

identifying a previous differential backup stream of the database;

inspecting the database block within the previous differential backup stream to identify the unique identifier of the database block and the past ordered identifier of the database block;

storing the unique identifier of the database block in association with the past ordered identifier of the database block in a log;

after identifying the database block within the differential backup stream, looking up the unique identifier of the database block in the log to retrieve the past ordered identifier.

6. The computer-implemented method of claim 1 , wherein forwarding the incremental backup stream to the backup location comprises forwarding the incremental backup stream from the database server to a backup server.

7. The computer-implemented method of claim 1 , wherein creating the incremental backup stream from the differential backup stream comprises inspecting each database block of the differential backup stream in order and determining, in order, whether to remove each database block of the differential backup stream.

8. The computer-implemented method of claim 1 , further comprising restoring the block-level incremental backup to the database.

9. A system for performing incremental database backups, the system comprising:

an identification module programmed to identify a request to perform a block-level incremental backup of a database, the block-level incremental backup comprising data that has changed within the database during a first span of time beginning at a previous block-level incremental backup of the database and omitting data that has not changed within the database during the first span of time beginning at the previous block-level incremental backup of the database;

a requesting module programmed to issue an additional request, in response to the request, for a differential backup stream from a database server of the database, the differential backup stream comprising data that has changed within the database during an overall span of time beginning at a most recent full backup, the most recent full backup having occurred prior to the previous block-level incremental backup, and omitting data that has not changed within the database during the overall span of time beginning at the most recent full backup;

a creation module programmed to create an incremental backup stream from the differential backup stream that comprises data that has changed during the overall span of time at least in part by removing at least one database block from the differential backup stream that has changed during the overall span of time but that has not changed during the first span of time;

a forwarding module programmed to forward the incremental backup stream to a backup location to create the block-level incremental backup;

at least one processor configured to execute the identification module, the requesting module, the creation module, and the forwarding module.

10. The system of claim 9 , wherein the creation module is programmed to remove the database block from the differential backup stream by inspecting content of the database block to determine that the database block has not changed since the previous block-level incremental backup.

11. The system of claim 9 , wherein the creation module is programmed to remove the database block from the differential backup stream by inspecting a control block within the differential backup stream to determine that the database block has not changed since the previous block-level incremental backup.

12. The system of claim 9 , wherein the creation module is programmed to remove the database block from the differential backup stream by:

inspecting the database block to identify a unique identifier of the database block;

inspecting the database block to identify an ordered identifier of the database block that indicates a place within a sequence at which the database block was changed;

determining that a past ordered identifier of the database block matches the ordered identifier of the database block.

13. The system of claim 12 , wherein the creation module is programmed to determine that the past ordered identifier of the database block matches the ordered identifier of the database block by:

identifying a previous differential backup stream of the database;

inspecting the database block within the previous differential backup stream to identify the unique identifier of the database block and the past ordered identifier of the database block;

storing the unique identifier of the database block in association with the past ordered identifier of the database block in a log;

after identifying the database block within the differential backup stream, looking up the unique identifier of the database block in the log to retrieve the past ordered identifier.

14. The system of claim 9 , wherein the forwarding module is programmed to forward the incremental backup stream to the backup location by forwarding the incremental backup stream from the database server to a backup server.

15. The system of claim 9 , wherein the creation module is programmed to create the incremental backup stream from the differential backup stream by inspecting each database block of the differential backup stream in order and determining, in order, whether to remove each database block of the differential backup stream.

16. The system of claim 9 , further comprising a restoring module programmed to restore the block-level incremental backup to the database.

17. A non-transitory computer-readable-storage medium comprising one or more computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

identify a request to perform a block-level incremental backup of a database, the block-level incremental backup comprising data that has changed within the database during a first span of time beginning at a previous block-level incremental backup of the database and omitting data that has not changed within the database during the first span of time beginning at the previous block-level incremental backup of the database;

issuing an additional request, in response to the request, for a differential backup stream from a database server of the database, the differential backup stream comprising data that has changed within the database during an overall span of time beginning at a most recent full backup, the most recent full backup having occurred prior to the previous block-level incremental backup, and omitting data that has not changed within the database during the overall span of time beginning at the most recent full backup;

create an incremental backup stream from the differential backup stream that comprises data that has changed during the overall span of time at least in part by removing at least one database block from the differential backup stream that has changed during the overall span of time but that has not changed during the first span of time;

forward the incremental backup stream to a backup location to create the block-level incremental backup.

18. The non-transitory computer-readable-storage medium of claim 17 , wherein removing the database block from the differential backup stream comprises inspecting content of the database block to determine that the database block has not changed since the previous block-level incremental backup.

19. The non-transitory computer-readable-storage medium of claim 17 , wherein removing the database block from the differential backup stream comprises inspecting a control block within the differential backup stream to determine that the database block has not changed since the previous block-level incremental backup.

20. The non-transitory computer-readable-storage medium of claim 17 , wherein removing the database block from the differential backup stream comprises:

inspecting the database block to identify a unique identifier of the database block;

inspecting the database block to identify an ordered identifier of the database block that indicates a place within a sequence at which the database block was changed;

determining that a past ordered identifier of the database block matches the ordered identifier of the database block.

Assignments (14)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2026
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 075728/0466 →
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038483/0203 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037693/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2013
From: PAYNE, MICHAEL; DEVOS, STEVEN
To: SYMANTEC CORPORATION
Reel/Frame 030013/0989 →