Mysql高级优化(二)

错误日志与二进制文件

错误日志(Error Log)是 MySQL 中最常用的一种日志,主要记录 MySQL 服务器启动和停止过程中的信 息、服务器在运行过程中发生的故障和异常情况等。

在 MySQL 数据库中,默认开启错误日志功能。一般情况下,错误日志存储在 MySQL 数据库的数据文件夹 下,通常名称为 hostname.err。其中,hostname 表示 MySQL 服务器的主机名。 在 MySQL 配置文件中,错误日志所记录的信息可以通过 log-error 和 log-warnings 来定义,其中,log-err 定义是否启用错误日志功能和错误日志的存储位置,log-warnings 定义是否将警告信息也记录到错误日志 中。 将 log_error 选项加入到 MySQL 配置文件的 [mysqld] 组中,形式如下:

Mysql高级优化(二)

其中,dir 参数指定错误日志的存储路径;filename 参数指定错误日志的文件名;省略参数时文件名默认为 主机名,存放在 Data 目录中。

重启 MySQL 服务后,参数开始生效,可以在指定路径下看到 filename.err 的文件,如果没有指定 filename,那么错误日志将直接默认为 hostname.err。 注意:错误日志中记录的并非全是错误信息,例如 MySQL 如何启动 InnoDB 的表空间文件、如何 初始化自己的存储引擎等,这些也记录在错误日志文件中。

错误日志中记录着开启和关闭 MySQL 服务的时间,以及服务运行过程中出现哪些异常等信息。如果 MySQL 服务出现异常,可以到错误日志中查找原因。 在 MySQL 中,通过 SHOW 命令可以查看错误日志文件所在的目录及文件名信息。

Mysql高级优化(二)

错误日志以文本文件的形式存储,直接使用普通文本工具就可以查看。这里通过记事本打开,从上面可以 知道错误日志的文件名。该文件在默认在mysql安装目录下或者是mysql目录data下,打开 localhost.localdomain.err 文件,部分内容如下:

Mysql高级优化(二)

Mysql高级优化(二)

以上是错误日志文件的一部分,主要记载了系统的一些运行错误。

在 MySQL 中,可以使用 mysqladmin 命令来开启新的错误日志,以保证 MySQL 服务器上的硬盘空间。 mysqladmin 命令的语法如下:

Mysql高级优化(二)

执行该命令后,MySQL 服务器首先会自动创建一个新的错误日志,然后将旧的错误日志更名为filename.err-old。

MySQL 服务器发生异常时,管理员可以在错误日志中找到发生异常的时间、原因,然后根据这些信息来解 决异常。对于很久之前的错误日志,查看的可能性不大,可以直接将这些错误日志删除。

二进制日志

二进制日志(Binary Log)也可叫作变更日志(Update Log),是 MySQL 中非常重要的日志。主要用于记 录数据库的变化情况,即 SQL 语句的 DDL 和 DML 语句,不包含数据记录查询操作。 如果 MySQL 数据库意外停止,可以通过二进制日志文件来查看用户执行了哪些操作,对数据库服务器文件 做了哪些修改,然后根据二进制日志文件中的记录来恢复数据库服务器。 默认情况下,二进制日志功能是关闭的。可以通过以下命令查看二进制日志是否开启,命令如下:

Mysql高级优化(二)

从结果可以看出,二进制日志是开启的。

在 MySQL 中,可以通过在配置文件中添加 log-bin 选项来开启二进制日志,格式如下:

Mysql高级优化(二)
其中,dir 参数指定二进制文件的存储路径;filename 参数指定二进制文件的文件名,其形式为 filename.number,number 的形式为 000001、000002 等。 每次重启 MySQL 服务后,都会生成一个新的二进制日志文件,这些日志文件的文件名中 filename 部分不会改变,number 会不断递增。 如果没有 dir 和 filename 参数,二进制日志将默认存储在数据库的数据目录下,默认的文件名为 hostname-bin.number,其中 hostname 表示主机名。
案例配置如下:

Mysql高级优化(二)

在mysql的data目录下查看生成的binlog日志文件,如下:

Mysql高级优化(二)

二进制文件基本操作-查看二进制文件

可以使用如下命令查看 MySQL 中有哪些二进制日志文件:

Mysql高级优化(二)

二进制文件基本操作-查看当前正在写入的二进制日志文件

show master status;命令用来查看当前的二进制日志;

Mysql高级优化(二)

二进制文件基本操作-查看二进制日志文件内容

二进制日志使用二进制格式存储,不能直接打开查看。如果需要查看二进制日志,使用show binlog events in ‘mysql-bin.000001’; 命令。

Mysql高级优化(二)

如果不指定查询的二进制文件,则默认为第一个二进制文件。

二进制文件基本操作-删除二进制文件

二进制日志中记录着大量的信息,如果很长时间不清理二进制日志,将会浪费很多的磁盘空间。删除二进 制日志的方法很多,下面介绍几种删除二进制日志的方法。
使用 RESET MASTER 语句可以删除的所有二进制日志,该语句的形式如下:

删除所有二进制日志
Mysql高级优化(二)
登录 MySQL 数据库后,可以执行该语句来删除所有二进制日志。删除所有二进制日志后,MySQL 将会重 新创建新的二进制日志,新二进制日志的编号从 000001 开始。

根据编号删除二进制日志
每个二进制日志文件后面有一个 6 位数的编号,如 000001。使用 PURGE MASTER LOGS TO 语句,可以删 除指定二进制日志的编号之前的日志。该语句的基本语法形式如下:

Mysql高级优化(二)

Mysql高级优化(二)

该语句将删除编号小于 filename.number 的所有二进制日志 下面删除 mylog.000004 之前的二进制日志,代码如下:

Mysql高级优化(二)

代码执行完后,编号为 000001、000002 和 000003 的二进制日志将被删除。

根据创建时间删除二进制日志

使用 PURGE MASTER LOGS TO 语句,可以删除指定时间之前创建的二进制日志,该语句的基本语法格式如 下:

Mysql高级优化(二)

其中,“hh”为 24 制的小时。该语句将删除在指定时间之前创建的所有二进制日志。 下面删除 2019-12-20 15:00:00 之前创建的二进制日志,代码如下:

Mysql高级优化(二)

代码执行完后,2019-12-20 15:00:00 之前创建的所有二进制日志将被删除。

使用二进制文件恢复数据

Mysql高级优化(二)

Mysql高级优化(二)

删除数据或者表

Mysql高级优化(二)

恢复数据

1. 通过日志文件节点恢复数据

根据节点需要我们查看日志文件提供给我们的数据库创建,表创建,数据新增等时创建的语句节点,从而 恢复数据。

Mysql高级优化(二)

Mysql高级优化(二)

Mysql高级优化(二)

其他恢复数据命令

Mysql高级优化(二)

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!