我想知道适合运行简单数据库的小型企业的备份策略。整个系统由一台带有内部硬盘的本地计算机运行。我已经研究过一些备份实用程序,例如rsync
和dump
,但不确定哪个更适合这种类型的场景。
作为一个具体的例子,我想了解像MySQL这样的备份实用程序是否rsync
适合从数据库(MySQL)复制数据并将其存储到外部硬盘驱动器中。
答案1
你问,
像 rsync 这样的备份实用程序是否适合从数据库(MySQL)复制数据
这里的答案是断然的“不!”。
除非您准备在执行rsync
基于 的备份时关闭 MySQL,否则您几乎肯定会在备份中得到损坏的数据库。 (实时系统将保持不受影响并正常工作。)原因是数据库系统可以并且将会在不同时间更新不同文件的不同部分。rsync
愉快地忽略这一点并复制找到的文件。
例如,考虑两个相互关联的文件 A 和 B。A 被复制为rsync
.在此过程中,B 由数据库系统更新。现在,数据库系统对 A 应用相关更新,但rsync
已完成 A 并开始对 B 进行更新。备份现在包含两个“有效”文件 A 和 B,但它们彼此不同步。
要备份数据库,您需要使用了解数据库系统的工具。 MySQL 软件包中包含此类工具,您应该使用它们来备份数据库。 (然后,您可以使用rsync
或任何其他首选实用程序将生成的数据库备份复制到外部磁盘驱动器。)
答案2
一般来说,不会。数据库必须使用专门构建的实用程序进行备份,以确保备份一致(即没有半提交的事务等)。实际上,对于在尝试复制文件时正在写入的任何文件都是如此 - 如果没有写入数据的程序的帮助,很难获得一致的备份。
(所以,如果你关闭 MySQL,那么你可以使用 rsync。但人们通常希望保持数据库正常运行。)
有多种适用于 MySQL 的工具,从mysqldump
Percona 的 XtraBackup 到。这两个在 Jessie 中都可用(对于 Wheezy 也是如此,尽管 xtrabackup 可能需要添加第 3 方存储库)。