Tengo una gran base de datos (en las decenas de millones de registros) en la que voy a realizar una copia de seguridad completa de la base de datos .
Sin embargo, la base de datos es lo suficientemente grande como para que las transacciones puedan comenzar antes y durante, así como comprometerse durante y después de la copia de seguridad.
Por ejemplo:
T0 = Transaction A start
T1 = Full database backup start
T2 = Transaction B start (will not deadlock with A)
T3 = Transaction A commit/rollback (does not matter, does it?)
T4 = Full database backup end
T5 = Transaction B commit/rollback (again, does not matter, does it?)
T0 T1 T2 T3 T4 T6
||----------||----------||----------||----------||----------||---------->
Tengo entendido que no se usan bloqueos durante una copia de seguridad (aunque pueden surgir otros problemas de rendimiento debido, por ejemplo, a una E / S alta) , pero no estoy seguro de qué puedo garantizar lo que se comprometerá o no.
Además, mi preocupación no es que la base de datos esté en un estado inconsistente, sino más bien cuál será ese estado (incluso si no es determinista, si hay un conjunto de reglas que pueden aplicarse de manera consistente) y cómo llegó allí ( por ejemplo, ¿qué parte del archivo de datos se usa junto con el registro de transacciones para crear un archivo de respaldo?