为什么要备份?
由于使用MySQL时自己的一些误操作导致数据丢失或者是开发写程序时删除了不该删的数据,我们知道企业中数据是最重要的,那么此时为了数据的安全性,我们就必须的提前把数据给备份好,万一出问题时,也好挽救回来。
其实导致数据灾难的原因有很多的,举一些基本的例子:硬件故障、软件故障、自然灾害、黑客攻击、误操作等都会导致数据丢失,那么在生产环境中我们备份数据就成为了必不可少的环节了。
一般来说公司内部部署的环境一般有三种,生产环境、测试环境、开发环境。有一点很重要的是当我们把灾难中的数据拯救回来后,不要以为就万事大吉了,一个必须的环节是你需要测试一下拯救回来的数是否都是完整的,以防自己恢复时少了什么步骤而遗漏要恢复的数据,所以测试环节必须的进行。当然不是说就单单是恢复的数据需要做备份,同样我们备份的数据也要随机抽取一些盘,测试我们备份的数据是否是完整的。
这里有几个需要注意的要点:
可容忍丢失多少数据;
恢复需要在多长时间内完成;
需要恢复什么;
下面说说备份类型有哪些?
完全备份,部分备份:
部分备份:仅备份其中的一张表或多张表;
完全备份,增量备份,差异备份
完全备份:对所指定的库所有数据进行备份
增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分;
差异备份:仅备份从上次完全备份之后变化的数据部分;
热备份、温备份和冷备份:根据服务器是否在线分类
热备份:在线备份,读写操作不受影响;
温备份:在线备份,读操作可继续进行,但写操作不允许;
冷备份:离线备份,数据库服务器离线,备份期间不能为业务提供读写服务;
MyISAM: 支持温备
InnoDB: 热备
从备份时,是实现数据直接导入导出还是直接复制数据文件进行备份,分为:
物理备份和逻辑备份:
物理备份:直接复制数据文件进行的备份; 物理备份在有些场景下不能跨平台(Linux下执行的备份不一定能恢复到windows上去);
逻辑备份:从数据库中“导出”数据另存而进行的备份;支持网络连接的方式恢复和备份
规则备份时需要考虑的因素:
持锁的时长
备份过程时长
备份负载
恢复过程时长
备份什么?
数据、额外的数据(二进制日志和InnoDB的事务日志)、代码(存储过程和存储函数、触发器、事件调度器等)、服务器配置文件
设计备份方案通常都是完全备份加增量备份
一周一次完全备份,每天都进行增量备份
备份工具:
mysqldump: 逻辑备份工具,适用于所有存储引擎,温备;完全备份,部分备份;对InnoDB存储引擎支持热备;(增量备份时,只需要备份从完全备份后的二进制日志)
cp, tar等文件系统工具:物理备份工具,适用于所有存储引擎;冷备;完全备份,部分备份;
lvm2的快照:几乎热备;借助于文件系统工具实现物理备份;
mysqlhotcopy : 几乎冷备;仅适用于MyISAM存储引擎;
备份方案之备份工具的选择:
mysqldump+binlog(主要用来基于时间点还原): mysqldump:完全备份,通过备份二进制日志实现增量备份;
lvm2快照+binlog:几乎热备,物理备份
xtrabackup:
对InnoDB:热备,支持完全备份和增量备份(不是通过备份二进制日志实现的,其自身会实现增量备份),都属于物理备份
对MyISAM引擎:温备,只支持完全备份