你使用过别人的备份方案来备份你的MySQL数据吗?你有多关心你的数据?你敢确定你现在正在运行的脚本就是可靠的,可恢复的备份,而且在运行过程中不会影响你的关键作业吗?在回答这个问题之前,先回答下面十个问题吧:
1. 备份要求停止数据库吗?如果不需要,那么备份的时候会影响什么?块设备?I/O负载?缓冲?或者是其他?
2. 备份用的是什么技术?是mysqldump还是与此类似的定制化产品?属于文件系统拷贝模式吗?
3. 备份系统能理解不能通过简单的拷贝文件来备份InnoDB类型的数据吗?
4. 备份使用了FLUSH TABLES, LOCK TABLES, 或者FLUSH TABLES WITH READ LOCK等SQL语句吗?所有这些语句都会中断MySQL进程。
5. MySQL还有哪些其他功用?我曾见过某个备份系统使用了RESET MASTER语句,结果它立马就把复制(replication)给中断了, 还有其他FLUSH 语句吗?比如FLUSH LOGS?
6. 备份系统能确保可以执行时间点(point-in-time)恢复吗?
7. 备份系统能确保binary log,InnoDB logs和复制数据保持一致性吗?
8. 你可以使用这个备份系统来设置一个新的复制slave端吗?如何做到?
9. 备份系统校验备份数据是否可恢复?比如它在生成备份成功之前是否运行过InnoDB恢复操作?
10. 它提供支持,确保可运行,可恢复备份吗?从法律意义上来讲它的担保能在什么程度?
当然,还需要提供更多其他与备份相关的一些细节,但是我个人认为,就针对MySQL而言,这些是比较重要的。
接下来呢?是的,我遇到过很多商家销售他们他们含有各种MySQL备份agent的备份产品,然而,我很难从其获得比较详细的技术细节,比如他们的备份是如何实现的,我甚至连最基本的信息,诸如“dump或者文件拷贝”都获取不到。有时,他们会告诉我去官方站点注册然后下载所谓的白皮书,可是白皮书上仅仅只是写着“支持MySQL数据”或者是“我们已经将你转接到地区销售人员”,然而我却总是找不到此人。
他们中的一些人甚至使用“专利”这个词来搪塞我,似乎认为这是一个不错的主意。实际上,一个专有的,保密的黑盒备份方案是不可接受的。MySQL备份是复杂的,想正确使用备份也比较难。除非我非常清楚这个备份产品是如何工作的,否则,我根本就不敢告诉客户这个东西是否可用。
因此,我提供上面这个列表的目的就是用来评估你将要使用的备份产品是否能到达了企业级备份要求。如果你不能回答上面的问题,依我看来,这个备份系统就不用评估了。