Patent ID: 8401998

Claim:
At a database server including one or more processors and system memory, the database server connected to one or more secondary database servers via a network, the database server also including a database, a file system, and a transaction log, the file system storing file system data separate from a main database file of the database, the transaction log for logging operations that occur at the database server, a method for mirroring changes to file system data to the one or more secondary database servers, the method comprising: an act of intercepting a file command directed to a portion of a file stored in the file system, the file command including a filename, an offset, and a size, the file name identifying the name of the file, the size and offset representing a portion of the file that is to change, the offset indicating a position within the file, the size representing how much data starting from the position and moving towards the end of the file is to change; an act of coalescing blocks of data associated with at least the intercepted file command and at least one or more other intercepted file commands by coalescing the offset and size of the intercepted file command with offsets and sizes from the one or more other intercepted file commands for the file into a sequence of one or more data blocks representing portions of the file; an act of receiving an indication that records for all coalesced blocks of data are to be written to the transaction log; and an act of writing a size and offset for each of the one or more data blocks into the transaction log to identify the portion of the file that is to change in response to receiving the indication; for each of the one or more data blocks, subsequent to writing a size and offset for each of the one or more data blocks into the transaction log: an act of reading the size and offset for the data block from the transaction log; an act of accessing the portion of data identified by the offset and size from within the file; an act of sending the portion of the file to the one or more secondary database servers; and an act of sending the portion of the transaction log containing the size and offset for the data block to the one or more secondary servers subsequent to sending the portion of the file to the one or more secondary database servers.