US 12,253,979 B2
Self-healing data synchronization
Liangqi Wang, Pleasanton, CA (US); Junyi Song, San Mateo, CA (US); and Sean Mahbod, Los Altos Hills, CA (US)
Assigned to Zuora, Inc., Redwood City, CA (US)
Filed by Zuora, Inc., Redwood City, CA (US)
Filed on Feb. 7, 2023, as Appl. No. 18/106,904.
Application 18/106,904 is a continuation of application No. 16/891,347, filed on Jun. 3, 2020, granted, now 11,573,930.
Claims priority of provisional application 62/856,702, filed on Jun. 3, 2019.
Prior Publication US 2023/0177018 A1, Jun. 8, 2023
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 16/00 (2019.01); G06F 11/07 (2006.01); G06F 11/16 (2006.01); G06F 16/11 (2019.01); G06F 16/17 (2019.01); G06F 16/178 (2019.01); G06F 16/21 (2019.01); G06F 16/23 (2019.01)
CPC G06F 16/178 (2019.01) [G06F 11/0772 (2013.01); G06F 11/1658 (2013.01); G06F 16/128 (2019.01); G06F 16/1734 (2019.01); G06F 16/214 (2019.01); G06F 16/2322 (2019.01); G06F 16/2379 (2019.01)] 17 Claims
OG exemplary drawing
 
1. A computer-implemented method for syncing data from a first database accessible by a first computing system to a second database accessible by a second computing system, the method comprising:
receiving a first set of data change events occurring in the first database over a period of time, the first set of data change events possibly failing to include particular data change events occurring in the first database during the period of time;
storing the first set of data change events in a synchronization store, the first set of data change events corresponding to a first set of data records;
synchronizing the first set of data records from the first database to the second database, the synchronizing possibly failing to synchronize a failed subset of one or more data records of the first set of data records;
reviewing a bin log of the first database to identify a second set of data change events occurring in the first database over the period of time, the second set of data change events corresponding to a second set of data records;
accessing the synchronization store to retrieve the first set of data change events;
comparing the second set of data change events against the first set of data change events to determine a third set of data change events, the third set of data change events including at least the particular data change events, the third set of data change events corresponding to a third set of one or more data records;
determining the failed subset of one or more data records;
writing sync failure information regarding the failed subset of one or more data records to a failure store;
removing any data records of the failed subset of one or more data records from the third set of one or more data records; and
synchronizing the third set of one or more data records from the first database to the second database.