根据备份接口区分:
物理备份:直接复制数据文件,打包归档。简单来说就是对 MySQL 的数据存放路径进行打包。
不需要额外工具,直接归档命令即可,但是跨平台能力比较差;如果数据量超过几十个G,则适用于物理备份。
逻辑备份:把数据抽取出来保存在 SQL 脚本中,mysqldump 就属于逻辑备份。
导入方便,直接读取 SQL 语句即可;逻辑备份恢复时间慢,占用空间大;无法保证浮点数的精度;恢复完数据库后需要重建索引。
根据备份时,MySQL 服务是否在线
- 冷备:停掉 MySQL 这个服务,读写操作都不能进行。
- 温备:全局施加共享锁,只能读不能写。
- 热备:不停掉 MySQL 这个服务,读写照样进行。
根据备份整个数据还是变化数据
1)完全备份:每次对数据进行完整的备份,即对整个数据库的备份(是差异备份与增量备份的基础)
优点:备份与恢复操作简单方便。
缺点:数据存在大量的重复;占用大量的空间;备份与恢复时间长。
2)差异备份:
备份那些自从上次完全备份之后被修改过的所有文件,备份的时间起点是从上次完全备份起,备份数据量越来越大。
恢复数据时,只需要恢复上次的完全备份与最近的一次差异备份。
3)增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会被备份。
优点:占用空间小,备份速度快。
缺点:如果中间某次的备份数据损坏,将导致数据丢失。
MySQL 最常用的三种备份工具
1)mysqldump:通常为数据小的情况下备份;单线程恢复比较慢。逻辑备份。
InnoDB:热备,温备。
MyISAM,Aria:温备。
2)xtrabackup(通常用 innobackupex 工具):备份 MySQL 大数据;属于物理备份,速度快。
InnoDB:热备,增量备份。
MyISAM:温备,不支持增量备份,只有完全备份。
3)lvm-snapshot:接近于热备的工具,因为要先请求全局锁,而后创建快照,并在创建快照完成后释放全局锁;
使用 cp tar 等工具进行物理备份;
备份和恢复速度较快。
很难实现增量备份,并且请求全局需要等待一段时间,在繁忙的服务器上尤其如此。
两者对比如下:
工具名称 mysqldump xtrabackup
备份方式 逻辑备份 物理备份
数据保存方式 SQL 脚本 二进制文件
是否支持热备份 是 是
是否支持增量备份 是 是
备份过程 会锁表 不锁表
是否影响正常业务 影响较大 影响较小
备份和恢复性能 耗时较长 耗时较短
占用空间 占用空间小 占用空间大