基于映像的备份可能会损坏数据吗?

我正考虑在非高峰时段在生产Windows系统上执行基于映像备份(Acronis)。 我只是想知道他们是否可能导致应用程序数据损坏。 比方说,我有一个数据库,很难打到。 我可能有数据库的起始块被提交到图像,数据插入到数据库(它改变了服务器上的数据库的开始块,但不是图像),然后提交数据块的图像(导致不一致的状态)。

这是我想说明的一个例子。 设想一个简单的数据结构,其前面的数字代表文件中“a”的数量。 数字和数据由“ – ”分隔。 例如:

4-ajjjjjjjajuuuuuuuaoffffa 

如果更改“a”,数据结构会重置文件开头的数字,例如:

  3-ajjjjjjjajuuuuuuuboffffa 

我认为acronis是一个块是一个直接的图像,所以这里是我的invisioning发生在我的数据库

  t0: 4-ajjjjjjjajuuuuuuuaoffffa ^pointer is here t1: 4-ajjjjjjjajuuuuuuuaoffffa ^pointer is here (all data before this is comitted to the image) t2: 4-ajjjjjjjajuuuuuuuboffffa ^pointer is here (all data before this is comitted to the image) Also notice how one of the "a"s change to a b. There are only 3 "a"s now t3: 4-ajjjjjjjajuuuuuuuboffffa ^pointer is here (all data before this is comitted to the image) 

现在最后的图像是“4-ajjjjjjjajuuuuuuuofoffffa”,而真实的数据是“3-ajjjjjjjajuuuuuuuboffffa”,导致腐败的“数据库”。

基本上,区块链下游的变化可能会反映在图像中,而重要的标题和同步可能已经被提交。 过时的标题信息并不能准确地反映出来的块的结构。

这里发生的是acronis,几乎所有的备份软件都是使用卷影服务。 SQL和交换服务器等各种应用程序也有自己的VSS编写器。

http://blog.macrium.com/2012/11/backup-internals-what-is-vss-how-does-it-work-and-why-do-we-use-it/有一个很好的概述怎么运行的。

基本上acronis会告诉窗口创build一个快照。 从那时起,当程序改变文件时,原始数据被保存到影子存储器。 当acronis到达文件的那一部分时,vss会从shadow存储中给出原始版本,而不是所有常规程序都能看到的最新版本。

如果一切正常,则最终会得到一份如果您拔下服务器上的插件并使备份脱机的情况下所得到的副本。 VSS感知应用程序(如SQL)在创build快照之前有机会保存需要保存的任何内容,以避免数据不一致。 其他程序如果在写入文件的过程中可能会损坏备份中的数据,但是由于快照很快发生,这种情况并不比在断电和服务器重新启动的情况下更糟糕。