Tôi có một cơ sở dữ liệu lớn (trong hàng chục triệu bản ghi) mà tôi sẽ thực hiện sao lưu cơ sở dữ liệu đầy đủ .
Tuy nhiên, cơ sở dữ liệu đủ lớn để các giao dịch có thể bắt đầu trước và trong, cũng như cam kết trong và sau khi sao lưu diễn ra.
Ví dụ:
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
||----------||----------||----------||----------||----------||---------->
Tôi hiểu rằng không có khóa nào được sử dụng trong quá trình sao lưu (mặc dù các vấn đề về hiệu suất khác có thể phát sinh do nói, I / O cao) , nhưng tôi không chắc mình có thể đảm bảo những gì sẽ được cam kết hay không.
Ngoài ra, mối quan tâm của tôi không phải là cơ sở dữ liệu sẽ ở trạng thái không nhất quán, mà là trạng thái đó sẽ là gì (ngay cả khi nó không mang tính quyết định, nếu có một bộ quy tắc có thể được áp dụng nhất quán) và làm thế nào nó đạt được ( ví dụ: có bao nhiêu tệp dữ liệu được sử dụng cùng với nhật ký giao dịch để tạo tệp sao lưu)?