MySQL数据备份
1.数据库备份的分类
1.1从物理与逻辑的角度,备份可以分为物理备份和逻辑备份。
1.1.1物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。物理备份又可分为脱机备份(冷备份)和联机备份(热备份)。
冷备份:是在关闭数据库的时候进行的
热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件
温备份:数据库锁定表格(不可写入但可读)的状态下进行的
1.1.2逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份
1.2从数据库的备份策略角度,备份可分为完全备份、差异备份和增量备份
完全备份:每次对数据进行完整的备份
对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。
优点:备份与恢复操作简单方便
缺点:数据存在大量的重复;占用大量的空间;备份与恢复时间长
增量备份:只有那些在上次完全备份或者增量备份后被修改的文件才会被备份
以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化,因而备份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份起到最后一次增量备份依次恢复,如中间某次的备份数据损坏,将导致数据的丢失。
2.MySQL备份思路
定期实施备份,指定备份计划或策略,并严格遵守
除了进行完全备份,开启MySQL服务器的日志功能是很重要的(完全备份加上日志,可以对MySQL进行最大化还原)
使用统一和易理解的备份名称,推荐使用库名或者表名加上时间的命名规则,如mysql_user-20160505.sql,不要使用backup1之类没有意义的名字。
3.MySQL全量备份与恢复
3.1备份
3.1.1单个备份一个库
3.1.2查看
3.1.3备份两个库(以上)要加参数--databases
3.1.4查看
3.1.5不指定库名,全部备份
3.1.6查看
3.1.7对单个一个表备份
3.1.8查看
3.1.9备份中压缩(可以加快速度)
3.1.10查看
3.2数据恢复
3.2.1模拟实验,删除一个库再恢复
3.2.2全备恢复(交互式)
3.2.3查看已恢复的数据
3.2.4全备恢复(不交互)模拟实验,删除一个库再恢复
3.2.5查看已恢复的数据
3.3备份与恢复单个的表
3.3.1已知表内信息数据如下:
3.3.2备份单个表
3.3.3删除表内信息
3.3.4恢复表内信息数据
3.3.5查看恢复数据
4.MySQL增量备份与恢复
4.1MySQL增量备份的特点:
没有重复数据,备份量不大,时间短
恢复麻烦: 需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复。
备注:MySQL没有提供直接的增量备份办法,可以通过MySQL提供的二进制日志( binary logs )间接实现增量备份。
4.2MySQL二进制日志对备份的意义:
二进制日志保存了所有更新或者可能更新数据库的操作。
二进制日志在启动MySQL服务器后开始记录,并在文件达到max_ binlog_ size所设置的大小或者接收到flush logs命令后重新创建新的日志文件。
只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份。
4.3flush logs刷新日志
4.3.1已知/usr/local/mysql/data/目录下
4.3.2刷新日志
4.3.3检查查看
4.4MySQL增量恢复的方法
4.4.1mysqlbinlog查看日志
4.4.2增量备份的三种用法
4.4.3一般的恢复:备份的二进制日志内容全部恢复
(1)刷新一个新日志002,以便实验
(2)检查环境,什么都没有
(3)创建一个表内数据,记录在002日志上
(4)刷新一个新日志003,以便实验
(5)执行删除命令
(6)检查环境,已删除
(7)为避免交互,重新刷新日志
已知现在创建表的数据存储在日志002,删除命令存储在日志003
实验一:
(1)执行增量数据恢复(日志002)
(2)检查实验结果
实验二:
(1)执行增量数据恢复(日志003)
(2)检查实验结果
4.4.4基于时间点的恢复:便于跳过某个发生错误的时间点实现数据恢复
4.4.5基于位置的恢复:可能在同一时间点既有错误的操作也有正确的操作,基于位置进行恢复更加精准
(1)已知现在为日志004
(2)已知现在表内信息数据如下
(3)查看当前位置(删除前)
(4)执行删除命令
(5)查看当前位置(删除后)
(6)检查当前环境
已知删除命令处以1853与2032之间
实验如下:
(1)执行增量数据恢复(日志004)
(2)检查实验结果(已成功删除)
4.5在企业中如何去应用MySQL的备份策略