目录
一、日志概述
二、二进制日志
1、开启二进制日志
2、查看二进制文件
3、删除二进制日志文件
4、恢复二进制日志
5、暂时停止二进制日志功能
三、错误日志
1、启动和设置错误日志
2、查看错误日志
3、删除错误日志
四、通用查询日志
五、慢查询日志
MySQL日志记录了MySQL数据库日常操作和错误信息。MySQL有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MySQL数据库的运行情况、用户操作、错误信息等,可以为MySQL管理和优化提供必要的信息。对于MySQL的管理工作而言,这些日志文件是不可缺少的。
日志分为4类:
1)错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。
2)查询日志:记录建立的客户端连接和执行的语句。
3)二进制日志:记录所有更改数据的语句,可以用于数据复制
4)慢查询日志:记录所有执行时间超过long_query_time的所有查询或不适用索引的查询。
在/etc/my.cnf文件【mysqld】标签下输入如下命令
#第一步
[root@master ~]# vim /etc/my.cnf
#第二步--在该文件里添加
log-bin=[mysql-bin]
server_id=100
server_id=[服务器序号任意,但是不能重复]。
然后再重启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)
mysql> show binary logs;
+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
| [mysql-bin].000001 | 154 |
+--------------------+-----------+
1 row in set (0.01 sec)
1)删除所有二进制日志文件
reset master;
2) 删除指定的二进制日志文件
#第一种删除指定二进制文件
purge {master | binany} logs to '日志文件名';
#第二种删除指定日期之前的所有日志文件
purge {master | binany} logs before '日期';
基本语法
mysqlbinlog [option] 日志文件名 | mysql -u用户名 -p密码
option重要参数:
--start-date、--stop-date:可以指定恢复数据库的起始时间和结束时间。
--start-position、-stop-position:可以指定恢复数据的开始位置和结束位置。
语法
set sql_log_bin=0 #暂停
set sql_log_bin=1 #恢复
在/etc/my.cnf文件【mysqld】标签下输入如下命令
#第一步
[root@master ~]# vim /etc/my.cnf
#第二步--在该文件里添加
log-error=[存放路径]
配置完保存,再重启mysql服务。
语法
show variables like '%log_error%';
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的性能,又会占用大量磁盘空间,所有在有需要的时候才开启对于日志,例如在开发环境中优化查询效率低的语句,可以开启慢查询日志,如果需要记录用户的所有插叙操作,可以开启通用查询日志,如果需要记录数据的变更,可以开启二进制日志;错误日志时默认开启的。