数据库备份分为物理备份和逻辑备份
- 物理备份:指对数据库操作系统的物理文件(如数据文件、日志文件等)的备份
冷备份(脱机备份):在关闭数据库时进行的备份操作,能够较好地保证数据库的完整性
热备份(联机备份):在数据库运行状态中进行操作,这种备份方法依赖于数据库的日志文件
温备份:当数据库进行备份时, 数据库的读操作可以执行, 但是不能执行写操作
- 逻辑备份:指对数据库逻辑组件(如表等数据库对象)的备份
完全备份:每次都对数据库全部备份,比较花费时间和空间。恢复备份比较简单,只需要恢复指定文件就可以。
差异备份:在第一次完全备份之后的每次备份都备份和第一次不一样的内容,比完全备份小,减少花费的时间和空间。恢复备份中等,要先恢复第一次的备份,在恢复最后一次的备份。
增量备份:在第一完全备份之后的每一次之备份与前一份不一样的内容,占用时间空间最少。恢复备份最复杂,要先恢复第一次的备份,再一次恢复之后的每一份备份。
常见备份工具
mysqldump: 逻辑备份工具, 适用于所有的存储引擎, 支持温备、完全备份、部分备份、对于InnoDB存储引擎支持热备
cp,tar 等归档复制工具
: 物理备份工具, 适用于所有的存储引擎, 冷备、完全备份、部分备份
lvm2 snapshot:几乎热备, 借助文件系统管理工具进行备份
mysqlhotcopy: 名不副实的的一个工具, 几乎冷备, 仅支持MyISAM存储引擎 。由于 mysqlhotcopy 只能用于 MyISAM 表,所以 MySQL 5.7 移除了 mysqlhotcopy 脚本。
xtrabackup:一款非常强大的InnoDB/XtraDB热备工具, 支持完全备份、增量备份, 由percona
提供
备份策略
备份数据要根据不同的场景来进行定制,一般情况下有几种常用场景
- 直接cp,tar复制数据库文件 (数据量比较小的时候可以使用)
- mysqldump+复制BIN LOGS(数据量还行,先使用mysqldump对数据库进行完全备份, 然后定期备份BINARY LOG达到增量备份的效果)
- lvm2快照+复制BIN LOGS (数据量一般,但又不过分影响业务,使用lvm2的快照对数据文件进行备份, 而后定期备份BINARY LOG达到增量备份的效果)
- xtrabackup+复制BIN LOGS**(数据量很大,不过分影响业务,使用xtrabackup进行完全备份后, 定期使用xtrabackup进行增量备份或差异备份)
mysqldump备份
基本语法
备份所有数据库
mysqldump -h 主机名 -u 用户名 -p --all-databases >C:\xxx.sql
备份指定数据库
mysqldump -h 主机名 -u 用户名 -p --databases 库1 库2 … >C:\xxx.sql
备份指定表
mysqldump -h 主机名 -u 用户名 -p 库名 表名1 表名2 … >C:\xxx.sql
基本参数
-u user 用户名 ;-h host 主机端口;-p password 表示要使用密码;-A all-databases 所有数据库;-B --databases XX XX多个数据库;-R备份存储过程和函数;--trigger备份触发器;-d仅表结构;-t仅数据;--lock-all-tables备份时锁定所有表,保持数据一致性;--lock-tables备份到哪个锁定哪个,保持数据一致性;--add-drop-table 如果存在先删除;--compact只输出重要语句,不输出注释及删除表语句;–single-transaction 保证数据一致性(仅支持事务的引擎如 InnoDB)