MySQL 日志

目录

一、日志概述

二、二进制日志

1、开启二进制日志

2、查看二进制文件

3、删除二进制日志文件

4、恢复二进制日志

5、暂时停止二进制日志功能

三、错误日志

1、启动和设置错误日志

2、查看错误日志

3、删除错误日志

四、通用查询日志

五、慢查询日志


一、日志概述

MySQL日志记录了MySQL数据库日常操作和错误信息。MySQL有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MySQL数据库的运行情况、用户操作、错误信息等,可以为MySQL管理和优化提供必要的信息。对于MySQL的管理工作而言,这些日志文件是不可缺少的。

日志分为4类:

1)错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。

2)查询日志:记录建立的客户端连接和执行的语句。

3)二进制日志:记录所有更改数据的语句,可以用于数据复制

4)慢查询日志:记录所有执行时间超过long_query_time的所有查询或不适用索引的查询。

二、二进制日志

1、开启二进制日志

在/etc/my.cnf文件【mysqld】标签下输入如下命令

#第一步
[root@master ~]# vim /etc/my.cnf
#第二步--在该文件里添加
log-bin=[mysql-bin]
server_id=100

server_id=[服务器序号任意,但是不能重复]。

MySQL 日志_第1张图片

 然后再重启mysqld服务器

[root@master ~]# systemctl restart mysqld

查看服务i进程状态----log_bin

mysql> show variables like 'log_%';
+----------------------------------------+----------------------------------+
| Variable_name                          | Value                            |
+----------------------------------------+----------------------------------+
| log_bin                                | ON                               |
| log_bin_basename                       | /var/lib/mysql/[mysql-bin]       |
| log_bin_index                          | /var/lib/mysql/[mysql-bin].index |
| log_bin_trust_function_creators        | OFF                              |
| log_bin_use_v1_row_events              | OFF                              |
| log_builtin_as_identified_by_password  | OFF                              |
| log_error                              | /var/log/mysqld.log              |
| log_error_verbosity                    | 3                                |
| log_output                             | FILE                             |
| log_queries_not_using_indexes          | OFF                              |
| log_slave_updates                      | OFF                              |
| log_slow_admin_statements              | OFF                              |
| log_slow_slave_statements              | OFF                              |
| log_statements_unsafe_for_binlog       | ON                               |
| log_syslog                             | OFF                              |
| log_syslog_facility                    | daemon                           |
| log_syslog_include_pid                 | ON                               |
| log_syslog_tag                         |                                  |
| log_throttle_queries_not_using_indexes | 0                                |
| log_timestamps                         | UTC                              |
| log_warnings                           | 2                                |
+----------------------------------------+----------------------------------+
21 rows in set (0.00 sec)

2、查看二进制文件

mysql> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| [mysql-bin].000001 |       154 |
+--------------------+-----------+
1 row in set (0.01 sec)

3、删除二进制日志文件

1)删除所有二进制日志文件

reset master;

2) 删除指定的二进制日志文件

#第一种删除指定二进制文件
purge {master | binany} logs to '日志文件名';
#第二种删除指定日期之前的所有日志文件
purge {master | binany} logs before '日期';

4、恢复二进制日志

基本语法

mysqlbinlog [option] 日志文件名 | mysql -u用户名 -p密码

option重要参数:

--start-date、--stop-date:可以指定恢复数据库的起始时间和结束时间。

--start-position、-stop-position:可以指定恢复数据的开始位置和结束位置。

5、暂时停止二进制日志功能

语法

set sql_log_bin=0   #暂停
set sql_log_bin=1   #恢复

三、错误日志

1、启动和设置错误日志

在/etc/my.cnf文件【mysqld】标签下输入如下命令

#第一步
[root@master ~]# vim /etc/my.cnf
#第二步--在该文件里添加
log-error=[存放路径]

配置完保存,再重启mysql服务。

2、查看错误日志

语法

show variables like '%log_error%';

3、删除错误日志

mysqladmin -u root -p密码 'flush-logs';

 需要在服务器客户端进行

例如

[root@master ~]# mysqladmin -u root -pRedHat@123 'flush-logs';
mysqladmin: [Warning] Using a password on the command line interface can be insecure.

四、通用查询日志

启动和设置通用查询日志

在/etc/my.cnf文件【mysqld】标签下输入如下命令

#第一步
[root@master ~]# vim /etc/my.cnf
#第二步--在该文件里添加
[mysqld]
log=[存放路径]

配置完保存,再重启mysql服务。

五、慢查询日志

MySQL如果启用了 slow_query_log=ON 选项,就会记录执行时间超过long_query_time的查询(初使 表锁定的时间不算作执行时间)。日志记录文件为slow_query_log_file[=file_name],如果没有给出 file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入 数据目录。

# 默认没有启用慢查询,为了服务器调优,建议开启
mysql> SHOW GLOBAL VARIABLES LIKE '%slow_query_log%';
# 开启方法,当前生效,永久有效配置文件中设置
SET GLOBAL slow_query_log=ON;
# 使用 mysqldumpslow 命令获得日志中显示的查询摘要来处理慢查询日志
# mysqldumpslow slow.log
# 那么多久算是慢呢?
# 如果查询时长超过long_query_time的定义值(默认10秒),即为慢查询:
mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';

日志会影响MySQL的性能,又会占用大量磁盘空间,所有在有需要的时候才开启对于日志,例如在开发环境中优化查询效率低的语句,可以开启慢查询日志,如果需要记录用户的所有插叙操作,可以开启通用查询日志,如果需要记录数据的变更,可以开启二进制日志;错误日志时默认开启的。

你可能感兴趣的:(MySQL,mysql,数据库)