我正在尝试使用rsync备份MySQL数据。表使用MyISAM存储引擎。
我的期望是,在第一次rsync之后,随后的rsyncs将会非常快。结果是,如果对表数据进行了更改,操作就会慢下来。
我用一个包含真实数据的989 MB MYD文件做了一个实验:
试验1-收回未经修改的数据
rsync -a orig.MYD copy.MYD
rsync -a orig.MYD copy.MYD
中
测试2-收回稍微修改过的数据
rsync -a orig.MYD copy.MYD
UPDATE table SET counter = counter + 1 WHERE id = 12345
rsync -a orig.MYD copy.MYD
一样长
怎么回事?为什么rsync要花费很长时间才能复制一个微小的变化?
编辑:实际上,测试2中的第二个rsync与第一个rsync一样长。rsync显然又在复制整个文件。
编辑:原来是从本地复制到本地,-整个文件是隐含的。即使没有完整的文件,表演还是很糟糕。
发布于 2009-07-31 18:27:10
rsync仍然需要计算块散列以确定更改了什么。不修改的情况可能是查看文件的时间/大小的快捷方式。
发布于 2009-07-31 18:28:54
rsync使用算法查看文件是否已更改,然后查看文件的哪些部分发生了更改。在大型数据库中,您的更改通常分布在文件的大段中。这是rsync最坏的情况。
发布于 2009-10-07 17:04:12
Rsync是基于文件的。如果您找到了一种使用基于块的系统执行此操作的方法,那么您可以只备份已更改的块/字节。
LVM快照可能是这样做的一种方式。
https://stackoverflow.com/questions/1214071
复制相似问题