mysql复习笔记06(小滴课堂)

发布时间:2023年12月23日

mysql数据安全之备份的背景意义

介绍数据备份

mysql数据安全之mysqldump备份实例(跨机器)

一般存在于mysql的bin目录下。中小型企业,数据量不是特别大的时候可以使用这个方式备份。

可以看到备份过来的库了。这是备份单个数据库。

如果想备份库中的某个表:

在数据库后加上表名即可。

备份多个数据库:

在备份库的时候,如果我们不加--databases,我们只是备份的数据,而不是库的结构。

备份是否加选项是有区别的。

mysqldump还有很多参数,可以使用--help进行查看。

这种方式属于完全备份,如果是在本地备份,-h选项可以去掉。

我们解压出来看看里面是什么东西:

我们能看到很大sql语句,但是它并没有把创建库的那个语句带过来。

如果我们把库删了,使用这个备份的语句时,会报找不到库名。

这种方式属于逻辑备份。

mysql数据安全之mysql数据的恢复

备份全库:

删除库(只是为了学习,在公司里千万不要这样做,万一恢复不回来,事情就大了)

会报找不到库。

解决方式是,创建一个库。

在使用语句:

这样就可以了。

如果数据量大,这种方式非常耗费时间。

数据就回来了。

如果是之前说的加上了参数的--databases就不会出现这个问题了。

多库如何恢复

备份多库sql文件再同样方式执行即可。

mysql数据安全之物理备份

查找数据源文件路径:

如果直接把表复制粘贴的方式用来备份,对于MyIsAm表没有影响,但是对InnoDB表会有影响的。

创建两个数据库。

创建库会生成db.opt文件,主要存储着当前库的默认字符集和字符校验规则。

创建个InnoDB表:

创建MyISAM表:

拷贝MyIsAm表:

可以查到数据只是数据为空。

同样的方法拷贝InnoDB表:

需要备份一下三个文件,非常重要。

拷贝过来了。

原来的这个文件进行删除。

重启数据库:

重启以后这三个文件又回来了。

我们解压新的拷贝的库。

在库里能看到这个表,但是查询却报错表不存在。

我们在其它库查看其它表依旧报错表不存在。

我们可以看出来我们把这三个文件移走了是对mysql服务器整个innodb表的影响,不是单一的某一个库。

删除重启后生成的文件。

之前的文件拿回来。

所属组和所属用户都是root。

我们要去进行修改:

重启服务器。

然后就可以查询的到了。

所以建议在物理备份的时候一定要把mysql服务器先停止了。

如果备份一个正在运行着的服务,除了停mysql服务器还有另一种方式:

备份之后再解锁。

不过数据量大的话,这种方式很费时间。

生产中很少直接使用拷贝的方式物料备份,如果用这种方式一定要备份那三个文件。等备份好库和表后再使用备份的这三个文件。

需要在/etc/my.cnf下去配置:

创建个存放日志数据的目录,一定要赋予mysql权限。

文件名可以随便起,加上这两个配置。

修改了配置文件,我们就要重启Mysql服务器:

现在我们已经开启了这个二进制日志。

查看所有的binlog日志列表:

可以这样查看我们的二进制日志。

刷新二进制日志:

我们的二进制日志列表就会刷新。

重启服务也会更新出一个文件。

我们也可以删除二进制文件:

就会重新从1开始生成。

先进行一次备份:

-f为刷新二进制日志。

备份完毕。

我们的二进制日志就从2开始了。

我们现在添加一条数据:

我们这个操作会被二进制日志监视到。

我们的二进制文件使用cat或者more查看会乱码。

我们需要用Mysql命令去查看。

这个命令在我们的安装目录下:

和mysqldump是在一起的。

直接查看也是报错。

会看到很多信息。

注释掉配置文件中的内容。

当然这是二进制文件,我们也可以给它导成普通文件:

生成了普通文件,我们就可以用more来查看了:

那我们怎么来恢复数据呢?

我们恢复我们之前删除的表:

我们插入之前已经备份了表。

所以没有看到插入的数据,我们怎么进行恢复呢?

我们可以根据时间和位置来恢复数据:

我们查看忽略大小写完全匹配我们删除表的语句。

通过cat -n 我们可以查看我们是在第几行删除的这个表。

也可以通过sed命令查看具体行的命令。

我们可以恢复开始行到结束行的数据。

数据就可以恢复成功了。

文章来源:https://blog.csdn.net/weixin_52618349/article/details/135142838
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。