Patent ID: 8751443

Claim:
A method of transitioning on-line between mirror states in a mirrored pair of databases comprising a primary database and a mirror database, comprising: temporarily suspending the mirror database input/output (I/O) upon a communications loss between the mirrored primary and mirror databases; choosing by a master server during said I/O suspension which of said databases of said pair will take over as a new primary database, and identifying the other of said databases as a new mirror database; transitioning to a change-tracking mirror state in which current and new online transactions continue to create changes to data and to file system objects in said new primary database; tracking during said change-tracking mirror state said changes to said data and recording the data changes from a transaction log to a change-tracking log and tracking said changes to said file system objects and recording the file system object changes in a persistent file system object table that maintains persistent records of changes to file system objects; determining that the communications loss between the mirrored primary and mirror databases has ended; imposing a momentary exclusive lock on said new primary database to block changes to data and to file system objects in response to determining that the communications loss between the mirrored primary and mirror databases has ended; transitioning to the re-sync mirror state in which mirrored database I/O is enabled and in which only lost changes to data and to file system objects that are necessary for resynchronization are made to the mirror database from said change-tracking log and from said persistent file system object table, respectively; determining that a commit-intent counter has a value greater than zero; preventing a transition from the re-sync mirror state to an in-sync mirror state while the commit-intent counter has a value greater than zero; decrementing the commit-intent counter each time a persistent file system object table entry has been updated with a new end of file until the commit-intent counter has a value of zero; transitioning to the in-sync mirror state in response to determining that the commit-intent counter has a value of zero.