一、备份方式与备份类型
1. 备份的必要性
生产环境中,为了防止硬件故障、软件故障、自然灾害、误操作等各种原因导致的数据库数据丢失后能恢复到事故之前的状态,我们需要对数据库进行备份和恢复操作。数据库的备份和恢复是非常重要的工作,数据的备份不是最终目的,数据的恢复才是
备份时应该注意的事项
- 最多能容忍多少数据丢失。
- 恢复数据需要在多长时间内完成。
- 需要恢复那些数据。
- 定期测试备份的可用性并提高恢复操作的效率。
- 备份时的服务器负载。
- 锁定资源的时长。
2. 备份的类型
a. 按备份数据集合范围分类
- 完全备份:full backup,备份全部字符集。
- 增量备份: incremental backup 上次完全备份或增量备份以来改变了的数据,不能单独使用,要借助完全备份,备份的频率取决于数据的更新频率。
- 差异备份:differential backup 上次完全备份以来改变了的数据。
b. 按照操作对象分类
- 物理备份:直接从磁盘复制数据文件进行备份。
- 逻辑备份:从数据库导出数据另存在一个或多个文件中,将数据转为具体的SQL语句。
c. 按照数据服务备份时的运行状态分类
- 冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行。
- 温备(warm backup): 服务在线,但仅支持读请求,不允许写请求。
- 热备(hot backup):备份的同时,业务不受影响。
d. 存储引擎支持的备份方式
存储引擎 | 冷备 | 温备 | 热备 |
---|
MyISAM | √ | √ | × |
InnoDB | √ | √ | √ |
3. 备份策略
- 直接cp,tar复制数据库文件
- mysqldump+复制BIN LOGS
- lvm2快照+复制BIN LOGS
- xtrabackup
场景
- 如果数据量较小, 可以使用第一种方式, 直接复制数据库文件
- 如果数据量还行, 可以使用第二种方式, 先使用mysqldump对数据库进行完全备份, 然后定期备份BINARY LOG达到增量备份的效果
- 如果数据量一般, 而又不过分影响业务运行, 可以使用第三种方式, 使用lvm2的快照对数据文件进行备份, 而后定期备份BINARY LOG达到增量备份的效果
- 如果数据量很大, 而又不过分影响业务运行, 可以使用第四种方式, 使用xtrabackup进行完全备份后, 定期使用xtrabackup进行增量备份或差异备份
二、备份工具
- mysqldump:mysql服务自带的备份工具。mysqldump是一个逻辑备份工具,它的本质是将数据库转为可执行SQL脚本。可以用来做完全备份和部分备份,支持InnoDB存储引擎的热备功能,MyISAM存储引擎的温备功能。
- 系统自带的cp/tar工具:这是一种物理备份,这种备份的原理是基于快照实现的,快照(请求一个全局锁),之后立即释放锁,达到几乎热备的效果。需要注意的是不能仅仅只备份数据,要同时备份事务日志,并且要求数据和日志在同一逻辑卷。
- xtrabackup:由Percona开发的很强大的开源工具,支持对InnoDB做热备,物理备份工具。在下篇博客将具体介绍此工具并做实际演示。
三、总结
备份工具 | 备份速度 | 恢复速度 | 便捷性 | 功能 | 场景 |
---|
cp | 快 | 快 | 一般、灵活性低 | 很弱 | 少量数据备份 |
mysqldump | 慢 | 慢 | 一般、可无视存储引擎的差异 | 一般 | 中小型数据量的备份 |
lvm2快照 | 快 | 快 | 一般、支持热备、速度快 | 一般 | 中小型数据量的备份 |
xtrabackup | 较快 | 较快 | 实现innodb热备、对存储引擎有要求 | 强大 | 较大规模的备份 |