一、 为什么要进行数据备份
为了让数据库数据丢失或者数据库崩坏时,不影响到正常的工作。
二、MySQL备份内容
-
数据文件
-
日志文件(eg. 事务日志,二进制日志)
-
存储过程,存储函数,触发器
-
配置文件(各个配置文件都要备份)
-
用于实现数据库备份的脚本,数据库自身清理的crontab等
三、 MySQL备份类型
-
根据服务器状态来分
-
热备份:读、写不受影响;
-
温备份:仅可以执行读操作;
-
冷备份:离线备份:读、写操作均终止;
-
-
从对象来分
-
物理备份:复制数据文件;
-
逻辑备份:将数据导出至文本文件中;
-
-
从数据收集来分
-
完全备份:备份全部数据;
-
增量备份:仅备份上次完全备份或增量备份以后变化的数据;
-
差异备份:仅备份上次完全备份以来变化的数据;
-
四、MySQL的冷热备份及引擎
-
冷热备份
-
冷备份:
停止服务进行备份,即停止数据库的写入 -
热备份:
不停止服务进行备份(在线)
-
-
MySQL的引擎
-
Innodb引擎
Innodb引擎提供了具有提交、回滚和崩溃恢复能力的事务安全,并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。但是对比MyISAM引擎,写的处理效率会差一些,并且会占用更多的磁盘空间以保留数据和索引。
InnoDB存储引擎的特点:支持自动增长列,支持外键约束
热备 √
温备 √
冷备 √ -
MyIASM引擎
它不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有要求或者以select,insert 为主的应用基本上可以用这个引擎来创建表。
支持3种不同的存储格式,分别是:静态表;动态表;压缩表。
热备 ×
温备 √
冷备 √
补充2点:
大容量的数据集时趋向于选择Innodb。因为它支持事务处理和故障的恢复。Innodb可以利用数据日志来进行数据的恢复。主键的查询在Innodb也是比较快的。
大批量的插入语句时(这里是INSERT语句)在MyIASM引擎中执行的比较的快,但是UPDATE语句在Innodb下执行的会比较的快,尤其是在并发量大的时候。
-
五、MySQL备份工具
-
MySQL自带的备份工具
-
mysqldump 逻辑备份工具,支持所有引擎,备份速度中速,还原速度非常非常慢,但是在实现的时候有很大的操作余地,且具有很好的弹性。
适合中小型数据库。 -
mysqlhotcopy 物理备份工具,只支持MyISAM引擎,基本上属于冷备的范围,速度比较快。
-
-
文件系统备份工具
-
cp冷备份,支持所有引擎,复制命令,只能实现冷备。备份速度块,还原速度几乎最快,但是灵活度很低。可以跨系统,但是跨平台能力很差。
适合小型数据库,是最可靠的 -
lvm几乎时热备,支持所有引擎,基于快照(lvm,ZFS)的物理备份,几乎是热备。备份速度比较快,还原速度比较快,没有什么弹性空间。
lvm的限制:不能对多个逻辑卷同一时间进行备份,所以数据文件和事务日志等各种文件必须放在同一个LVM上。
ZFS则非常好的可以在多个逻辑卷之间备份。
-
-
其他工具
-
ibbackup 商业工具,备份和还原速度都很快,需付费。
-
xtrabackup开源工具,是ibbackup商业工具的替代工具。
-
mysqlbackup 是ORACLE公司提供的。
-