0
点赞
收藏
分享

微信扫一扫

Mysql优化学习33-数据备份

#1.数据备份种类

##1.1备份的分类维度

  • 备份时数据库状态
  • 备份文件的格式
  • 备份的内容

#####1.1.1备份时数据库状态
Mysql优化学习33-数据备份
冷备一般很少用,因为影响数据的访问。

#####1.1.2备份文件的格式
Mysql优化学习33-数据备份

备份文件一般就是idb文件

#####1.1.3备份的内容

Mysql优化学习33-数据备份

我们了解binlog其实就是增量的内容,与增量备份不同的是他可读性差,增量备份一般指的是逻辑备份。

##1.2备份工具

Mysql优化学习33-数据备份

##1.3总结

Mysql优化学习33-数据备份

#2.各种备份讲解

##2.1 使用outfile

#####2.1.1 概念
Mysql优化学习33-数据备份

#####2.1.2 使用方式

首先我们需要查一下可以导出的能用的安全的路径。
Mysql优化学习33-数据备份

如果secure_file_priv为NULL那么就是禁止导出文件,需要在mysql做下修改。
解决方法:my.ini里面加一行secure_file_priv="路径" 然后需要放在mysql安装路径下和bin目录下 然后重启mysql (讨厌的是8.0的版本是没有cnf的,很多mysql配置都给默认了,所以如果没有的自行网上搜索)

我自己导出的是sakila的actor表,下面是导出之后的数据:

Mysql优化学习33-数据备份

数据库中是这个样子:

Mysql优化学习33-数据备份

可以看出来这个命令导出的就是我们查询的数据。

#####2.1.3 如果我们想要备份的是这个时间点,没有任何修改数据的情况

我们可以利用事务的隔离机制,mysql默认是可重复读,那我们可以在mysql中开启事务这么做就好了:

Mysql优化学习33-数据备份

#####2.1.4 个性化的设置

原本我们导出每个字段的值之间是有空格的,可以用逗号代替:
Mysql优化学习33-数据备份

#####2.1.5 outfile注意事项

Mysql优化学习33-数据备份

#####2.1.6 outfile 缺陷

Mysql优化学习33-数据备份

#####2.1.7总结

Mysql优化学习33-数据备份
在上面我们导出了outfile的数据发现只有数据,没有字段所以就注定是无法恢复数据的,但是比如我们需要某些导出的数据,那么这个简单又方便,sql又是可以随便写,非常灵活。

##2.2 使用mysqldump

#####2.2.1 outfile如何改进

Mysql优化学习33-数据备份

#####2.2.2 mysqldump 概念

Mysql优化学习33-数据备份

#####2.2.3 原理

在mysql8之前我们在查询sql语句的时候server层都会进行一个缓存,这样下次查询就可以很快的把结果可以拿出来。

下面mysqldump在备份的时候就会去掉缓存,这样节省了缓存空间不说,也很高效。
Mysql优化学习33-数据备份

#####2.2.4 使用

下面语句的d1后面意思是使用可重复度的隔离级别。

Mysql优化学习33-数据备份

如果不了解mysqldump的具体使用方法可以查或者直接敲来看提示:

Mysql优化学习33-数据备份

命令执行完就会在当前的文件目录下面找到文件,打开一看就会发现除了数据还会有建表语句,也就是说这个是可以真正恢复数据的文件。

#####2.2.5 注意事项

Mysql优化学习33-数据备份
我们主要关注innodb下的就可以,毕竟myisam用的太少了。

#####2.2.6 mysqldump缺点

Mysql优化学习33-数据备份

说起优缺点就要有个对比项,我们对比outfile来说,因为他select *了,所以就走了b+树然后把所有字段给解析出来,又因为他要写insert语句所以性能上肯定是要慢点了。当然导入也是同样的道理。

#####2.2.7 总结

Mysql优化学习33-数据备份

就是因为要走b+树,所以必然是比物理备份要多走了几步,所以性能是差的。

##2.3 mysqldump增量备份

#####2.3.1 增量备份思路

说起增量备份,那么我们必须得知道增量的sql语句,说起这个我们会想到一个redo log一个是binlog,那么用哪个呢?

当然是binlog了,因为redo log InnoDB有,MyIsam或者其他引擎可能就没有。

Mysql优化学习33-数据备份

我们可以看到binlog文件,他在mysql安装位置的data目录下:

Mysql优化学习33-数据备份

#####2.3.2 步骤一:全量备份

Mysql优化学习33-数据备份
相比于之前的备份命令我们多了一些参数,比如备份之后切换binlog文件,还有就是记录切换后的binlog文件名,这个意思就是有一堆binlog文件,当前记录到了11,这次备份完就要切换,mysql就不要继续记录11,备份完从新的12文件开始记录,同时mydump会记录12到备份文件中,这样下次恢复我就知道增量的binlog从哪个文件开始读了。

备份完之后的备份文件中关于记录binlog的截图:
Mysql优化学习33-数据备份

#####2.3.3 步骤二:增量备份
Mysql优化学习33-数据备份

这个备份其实不是说给输出一个文件,而是暂时当前的binlog的写入,重新开启一个新的binlog,这样就相当于保存了一个增量的文件。以待下次的数据恢复。

#####2.3.4 还原数据

Mysql优化学习33-数据备份

#####2.3.5总结

Mysql优化学习33-数据备份

##2.4 如何使用XtraBackup物理备份

#####2.4.1为什么需要物理备份

Mysql优化学习33-数据备份

因为是直接拿文件,根本就不走mysql server的解析,优化执行那一套,所以速度相当的快,也不需要消耗mysql的性能资源等。

#####2.4.2 直接拷贝文件行吗

Mysql优化学习33-数据备份

  • frm文件:元数据文件
  • ibd文件:数据文件

Mysql优化学习33-数据备份

首先我们之前了解过,数据是首先进入到redo log文件中,然后再择机刷到ibd文件中。

然后ibd文件是数据文件,可能会非常大,有的数据库十几个G都很正常,而且我们的数据库可能随时都在修改数据,所以我们如果直接拷贝,可能数据也正在变化中;

针对于变化,我们可以去监听redo log文件,这样我们拷贝完ibd文件之后,也能知道变化了的数据。这样我们就可以拿到完整的数据了(ibd数据+增量的redo log文件)。

#####2.4.3 如何实现物理+热+全量 备份?

Mysql优化学习33-数据备份

由于frm文件并没有redo log这样的日志去监听变化,所以我们不得不加锁来防止拷贝期间的数据变化。

#####2.4.3 如何实现物理+热+增量 备份?

Mysql优化学习33-数据备份

#####2.4.4 如何实现物理还原

Mysql优化学习33-数据备份

#####2.4.5 ibbackup

其实就是 ibdbackup的意思,ibd备份工具。

Mysql优化学习33-数据备份
这个工具看起来非常的优秀,但是我们看他名称有个 enterprise,就知道是商业的,所以要收费。

那有没有相同功能的工具呢? 就是XtraBackup这个工具了。

#####2.4.6 XtraBackup

Mysql优化学习33-数据备份

Mysql优化学习33-数据备份
我们还可以去percona的官网去下载也是很方便的。

Mysql优化学习33-数据备份

Mysql优化学习33-数据备份

#####2.4.7 XtraBackup全量使用方法

Mysql优化学习33-数据备份

有一点需要注意的是他保存在这个目录下的时候会再新建一个日期文件夹来存放数据

#####2.4.8 XtraBackup增量使用方法
Mysql优化学习33-数据备份

#####2.4.9 总结

Mysql优化学习33-数据备份

##2.5 新的备份工具

mylvmbackup

Mysql优化学习33-数据备份

思路:我们备份文件有各种问题比如不一致或者还原出问题,那我们不妨换种思路,直接备份磁盘,这种思路真的挺创新的。

mydumper

mysqldump慢是有个原因,就是比如备份数据库,他是一个表一个表的导的,所以慢,其实没有必要,因为mysql是可以并发执行的。

Mysql优化学习33-数据备份

可以看出这个工具相较于mysqldump的不同是使用了多线程来并发的执行,所以速度当然快了,但是问题当然是消耗mysql的性能和资源了。

Zmanda Recovery Manager

图形化的备份工具,继承了各种操作。
Mysql优化学习33-数据备份

#####总结

Mysql优化学习33-数据备份

##2.6 防患于未然

DML是数据本身的修改权限
DDL是元数据的修改权限(数据表字段的修改,删表等)

#####2.6.1 权限隔离

Mysql优化学习33-数据备份

#####2.6.2 SQL审计

Mysql优化学习33-数据备份

#####2.6.3 伪删表

Mysql优化学习33-数据备份

#####2.6.4 完备流程

Mysql优化学习33-数据备份

举报

相关推荐

0 条评论