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单个备份一个库

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构

3.1.2查看

mysql备份部分表结构 mysql备份分为_数据_02

3.1.3备份两个库(以上)要加参数--databases

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_03

3.1.4查看

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_04

3.1.5不指定库名,全部备份

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_05

3.1.6查看

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_06

3.1.7对单个一个表备份

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_07

3.1.8查看

mysql备份部分表结构 mysql备份分为_增量备份_08

3.1.9备份中压缩(可以加快速度)

mysql备份部分表结构 mysql备份分为_MySQL_09

3.1.10查看

mysql备份部分表结构 mysql备份分为_数据_10

3.2数据恢复

3.2.1模拟实验,删除一个库再恢复

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_11

3.2.2全备恢复(交互式)

mysql备份部分表结构 mysql备份分为_增量备份_12

3.2.3查看已恢复的数据

mysql备份部分表结构 mysql备份分为_MySQL_13

3.2.4全备恢复(不交互)模拟实验,删除一个库再恢复

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_14

3.2.5查看已恢复的数据

mysql备份部分表结构 mysql备份分为_MySQL_15

mysql备份部分表结构 mysql备份分为_增量备份_16

3.3备份与恢复单个的表

3.3.1已知表内信息数据如下:

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_17

3.3.2备份单个表

mysql备份部分表结构 mysql备份分为_MySQL_18

3.3.3删除表内信息

mysql备份部分表结构 mysql备份分为_数据_19

3.3.4恢复表内信息数据

mysql备份部分表结构 mysql备份分为_如何进行mysql数据备份_20

3.3.5查看恢复数据

mysql备份部分表结构 mysql备份分为_MySQL_21

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/目录下

mysql备份部分表结构 mysql备份分为_增量备份_22

4.3.2刷新日志

mysql备份部分表结构 mysql备份分为_如何进行mysql数据备份_23

4.3.3检查查看

mysql备份部分表结构 mysql备份分为_增量备份_24

4.4MySQL增量恢复的方法

4.4.1mysqlbinlog查看日志

mysql备份部分表结构 mysql备份分为_增量备份_25

4.4.2增量备份的三种用法

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_26

4.4.3一般的恢复:备份的二进制日志内容全部恢复

(1)刷新一个新日志002,以便实验

mysql备份部分表结构 mysql备份分为_MySQL_27

mysql备份部分表结构 mysql备份分为_增量备份_28

(2)检查环境,什么都没有

mysql备份部分表结构 mysql备份分为_数据_29

(3)创建一个表内数据,记录在002日志上

mysql备份部分表结构 mysql备份分为_数据_30

(4)刷新一个新日志003,以便实验

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_31

mysql备份部分表结构 mysql备份分为_MySQL_32

(5)执行删除命令

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_33

(6)检查环境,已删除

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_34

(7)为避免交互,重新刷新日志

mysql备份部分表结构 mysql备份分为_数据_35

已知现在创建表的数据存储在日志002,删除命令存储在日志003

实验一:

(1)执行增量数据恢复(日志002)

mysql备份部分表结构 mysql备份分为_增量备份_36

(2)检查实验结果

mysql备份部分表结构 mysql备份分为_数据_37

实验二:

(1)执行增量数据恢复(日志003)

mysql备份部分表结构 mysql备份分为_MySQL_38

(2)检查实验结果

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_39

4.4.4基于时间点的恢复:便于跳过某个发生错误的时间点实现数据恢复

4.4.5基于位置的恢复:可能在同一时间点既有错误的操作也有正确的操作,基于位置进行恢复更加精准

(1)已知现在为日志004

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_40

(2)已知现在表内信息数据如下

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_41

(3)查看当前位置(删除前)

mysql备份部分表结构 mysql备份分为_数据_42

(4)执行删除命令

mysql备份部分表结构 mysql备份分为_如何进行mysql数据备份_43

(5)查看当前位置(删除后)

mysql备份部分表结构 mysql备份分为_MySQL_44

(6)检查当前环境

mysql备份部分表结构 mysql备份分为_数据_45

已知删除命令处以1853与2032之间

实验如下:

(1)执行增量数据恢复(日志004)

mysql备份部分表结构 mysql备份分为_mysql备份部分表结构_46

(2)检查实验结果(已成功删除)

mysql备份部分表结构 mysql备份分为_MySQL_47

4.5在企业中如何去应用MySQL的备份策略

mysql备份部分表结构 mysql备份分为_MySQL_48

mysql备份部分表结构 mysql备份分为_如何进行mysql数据备份_49

mysql备份部分表结构 mysql备份分为_MySQL_50