前言:
数据备份的目的——恢复数据
在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这样情况下,我们必须保证数据的安全性和完整性
目录
1、MySQL自带的备份工具——mysqldump、mysqlhotcopy
一、备份类型
【1】根据服务器状态,可以分为热备份、温备份、冷备份
-
热备份:读、写不受影响;
-
温备份:仅可以执行读操作;
-
冷备份:离线备份;读、写操作均中止;
【2】从对象来分,可以分为物理备份与逻辑备份
-
物理备份:复制数据文件;
-
逻辑备份:将数据导出至文本文件中;
物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。
- 因为是直接复制文件系统上面的数据,因此备份文件和数据文件完全一致
- 物理备份比逻辑备份速度要快
- 数据还原后不保证table层面的一致性(不同存储引擎行为不一样)
- 除了数据外,物理备份也同时备份了一些其他文件,例如日志文件
- 物理备份最好在服务器停止的情况下备份,确保数据一致性,否则需要在锁表的前提下进行备份
- 无法备份内存表,因为内存表没有写入硬盘
- 物理备份可移植性较低,例如在Linux下备份的文件还原到windows下是就可能会有问题
- 物理备份则对版本要求非常高
逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份。
即以sql语句的形式,把库、表结构、表数据保存下来。
- 逻辑备份只能在服务器online的情况下备份,因为需要运行sql语句
- 逻辑备份速度比物理备份慢
- 不管数据库是什么引擎,保证数据在database层面和table层面的一致性
- 只能备份数据,不能备份配置文件或者日志文件
- 备份文件可能会比物理备份的大
- 逻辑备份可以在不锁表的情况下进行备份(针对innoDB引擎)
- 逻辑备份可移植性比物理备份高 (逻辑备份有非常强的兼容性)
- 可能会丢失浮点数的精度信息
【3】从数据收集来分,可以完全备份、增量备份、差异备份
-
完全备份:备份全部数据;
-
增量备份:仅备份上次完全备份或增量备份以后变化的数据;
-
差异备份:仅备份上次完全备份以来变化的数据;
二、备份内容
数据文件
日志文件(比如事务日志,二进制日志)
存储过程,存储函数,触发器
配置文件(十分重要,各个配置文件都要备份)
用于实现数据库备份的脚本,数据库自身清理的Crontab等……
三、备份工具
1、MySQL自带的备份工具——mysqldump、mysqlhotcopy
mysqldump,是mysql数据库管理系统,自带的逻辑备份工具,支持所有引擎,MyISAM引擎是温备,InnoDB引擎是热备,备份速度中速,还原速度非常非常慢。但是在实现还原的时候,具有很大的操作余地。具有很好的弹性。
mysqlhotcopy 物理备份工具,但只支持MyISAM引擎,基本上属于冷备的范畴,物理备份,速度比较快。mysqlhotcopy使用lock tables、flush tables和cp或scp来快速备份数据库或单个表,属于裸文件备份(物理备份),只能用于MyISAM引擎的数据库。本质是使用锁表语句,然后cp或scp。
2、文件系统备份工具
cp命令, 冷备份,支持所有引擎,复制命令,只能实现冷备,物理备份。使用归档工具,cp命令,对其进行备份的,备份速度快,还原速度几乎最快,但是灵活度很低,可以跨系统,但是跨平台能力很差。
lvm 几乎是热备份,支持所有引擎,基于快照(LVM,ZFS)的物理备份,速度非常快,几乎是热备。只影响数据几秒钟而已。但是创建快照的过程本身就影响到了数据库在线的使用,所以备份速度比较快,恢复速度比较快,没有什么弹性空间,而且LVM的限制:不能对多个逻辑卷同一时间进行备份,所以数据文件和事务日志等各种文件必须放在同一个LVM上。而ZFS则非常好的可以在多逻辑卷之间备份。
3、其它工具
ibbackup
xtrabackup
mysqlbackup