概述
根据备份方法的不同,备份可以分为:
- 热备 Hot Backup:指数据库运行中直接备份,对正在运行的数据库没有任何影响,也称在线备份(Online Backup)
- 冷备 Code Backup: 指备份操作是在数据库停止的情况下,也称离线备份(Offline Backup)
- 温备份 Warm Backup: 指数据库运行中进行的备份操作,但是对当前数据库操作有影响。如加一个全局读锁保证数据一致性
按照备份后的文件的内容可以分为:
- 逻辑备份: 指备份出的文件内容是可读的,内容一般是由一条条SQL语句或表内容实际数据组成
- 一般用于数据库升级与迁移
- 缺点是 恢复所需要的时间往往比较长
- 裸文件备份: 复制数据库的物理文件,即可以是在数据库运行中的复制,也可以是数据库停止运行时直接的数据文件复制。
- 恢复时间往往比逻辑备份短的多
按照备份数据库的内容可分为:
- 完全备份:对数据库进行一个完全的备份
- 增量备份:在上次完全备份的基础上,对于更改的数据进行备份
- 日志备份:主要指对MySQL数据库二进制日志的备份
MySQL数据库复制(replication)的原理就是异步实时的将二进制日志重做传送并应用到从(slave/standby)数据库
冷备
对于InnoDB存储引擎的冷备,只需要备份MySQL数据库的frm文件,共享表空间文件,独立表空间文件(*.idb),重做日志。
另外建议定期备份MySQL数据库的配置文件my.cnf
最好将本地产生的备份存放到一台远程服务器中,却被不会应为本地数据库的宕机而影响备份文件的使用
优点:
- 备份简单,只需要复制相关文件
- 恢复简单,只需要把文件恢复到指定位置即可
- 备份文件可在不同操作系统,不同MySQL版本上恢复
- 恢复速度快,不需要执行任何SQL语句,也不需要重建索引
缺点:
- InnoDB存储引擎冷备的文件通常比逻辑文件大很多,因为表空间存放着很多其他数据,如undo段,插入缓冲等信息
- 冷备跨平台可能存在操作系统,MySQL的版本,文件大小写敏感和浮点数格式都可能称为问题
热备
ibbackup是InnoDB存储引擎官方提供的热备工具,可以同时备份MyISAM存储引擎。原理是:
- 记录备份开始时,InnoDB存储引擎重做日志文件检查点的LSN
- 复制共享表空间文件以及独立表空间文件
- 记录复制完表空间文件后,InnoDB存储引擎重做日志文件检查点LSN
- 复制在备份时产生的重做日志
优点:
- 在线备份,不阻塞任何的SQL语句
- 备份性能好,备份的实质是复制数据库文件和重做日志文件
- 支持压缩备份,通过选项,支持不同级别的压缩
- 跨平台
逻辑备份
1 | #1. 备份所有数据库 |
注意:
-
mysqldump 无法导出视图,需要独立导出视图的定义或者备份视图定义 frm文件
-
备份二进制日志文件前,可以通过FLUSH LOGS 命令来生成一个新的二进制日志文件,然后备份
快照备份
指通过文件系统的快照功能进行数据库备份,MySQL本身不支持快照功能
复制(replication)
replication的工作原理可以分为3个步骤:
- 主服务器(master)把数据更改记录到二进制日志(binlog)中
- 从服务器(slave)把主服务器的二进制日志复制到自己的中继日志(relay log)中
- 从服务器重做中继日志中的日志,把更改应用到自己的数据库
复制不是完全实时地进行同步,而是异步实时

主服务器上有一个线程负责发送二进制日志
从服务器有2个线程
-
I/O线程,负责读取主服务器的二进制日志,并将其保存为中继日志
-
SQL线程负责复制执行中继日志
在主从架构下,当主服务器误操作发生,从库也会跟着执行,这该怎样恢复?
可对从服务器上的数据库所在分区做快照,避免误操作对复制造成的影响,然后根据二进制日志进行point-in-time的恢复,因此快照+复制的备份架构如下:

参考文献
- 《MySql技术内幕》