MYSQL日志

前言

        日志能够记录MySQL中的所有数据操作。在日志的辅助下,可以进行数据备份,恢复和复制, 排查问题,性能优化等操作.

日志配置

        可以在my.cnf文件或者my.ini文件中进行配置

查询配置指令

# 展示所有配置
SHOW VARIABLES;

# 与二进制日志 相关配置
SHOW VARIABLES like '%log_bin%';

# 与错误日志 相关配置
SHOW VARIABLES like '%log_error%';

日志相关配置说明

注:修改配置前,记得备份!!!

[mysqld]

# 指定是否开启二进制日志功能,用于主从复制和恢复操作。(范例是OS系统下)

log_bin = /usr/local/var/mysql/bin_log/mysql-bin

# 二进制文件的格式。枚举值:STATEMENT、ROW和MIXED

binlog_format= mixed

# 二进制日志的缓存大小

binlog_cache_size=32m

# 二进制日志的最大缓存大小

max_binlog_cache_size=64m

# 单个二进制日志文件的最大大小,超过指定大小,生成新日志文件

max_binlog_size=512m

# 二进制日志的过期时间 默认值为0,不会清理

expire_logs_days = 10

# log_error 错误日志文件的路径 默认为host_name.err

log_error = /usr/local/var/mysql/local.err

# 表示是否开启查询日志 1 开启

general_log = 1

# 查询日志的文件目录

general_log_file = /usr/local/var/mysql/mysql/general_statement.log

# 日志的存储方式 枚举值:TABLE、FILE、NONE (数据表、文件、不保存)

log_output = FILE

# 是否开启慢查询日志   1 开启

slow_query_log = 1

# 慢查询日志的文件位置 

slow_query_log_file = /usr/local/var/mysql/mysql/slow_statement.log

# 指定SQL语句执行时间超过多少秒时记录慢查询日志

long_query_time = 10

查看二进制日志

mysqlbinlog是MySQL数据库自带的命令行工具,用于解析并显示二进制日志文件的内容。它可以用来查看和分析MySQL的二进制日志,包括查询、更新、事务等操作。

mysqlbinlog命令的常用选项包括:

  1. --user:指定连接MySQL服务器所使用的用户名。
  2. --password:指定连接MySQL服务器所使用的密码。
  3. --host:指定MySQL服务器的主机名或IP地址。
  4. --port:指定MySQL服务器的端口号。
  5. --start-datetime:指定开始解析的时间范围。
  6. --stop-datetime:指定停止解析的时间范围。
  7. --start-position:指定开始解析的日志位置。
  8. --stop-position:指定停止解析的日志位置。
  9. --database:指定要解析的数据库名称。
  10. --verbose:显示详细的解析信息。
  11. --base64-output:以Base64编码格式输出结果。
  12. --result-file:将解析结果输出到指定文件。
# 查看二进制日志文件内容
mysqlbinlog binlog.000001

# 指定连接MySQL服务器并解析二进制日志文件
mysqlbinlog --user=root --password=123456 --host=localhost --port=3306 binlog.000001

# 指定时间范围解析二进制日志文件
mysqlbinlog --start-datetime="2023-10-01 00:00:00" --stop-datetime="2023-10-02 00:00:00" binlog.000001

# 解析指定数据库的二进制日志文件
mysqlbinlog --database=mydb binlog.000001

删除日志 

指令 效果 范例
RESET MASTER; 清空全部日志,并新建binlog.000001文件
purge master logs to 'binlog.*' 删除编号*以前的所有日志文件 purge master logs to 'binlog.000003'
purge master logs before 'yyyy-mm-dd hh:mm:ss' 删除某个时间点以前的日志(除了当前活跃的日志) PURGE BINARY LOGS BEFORE '2021-01-01 00:00:00';

优缺点

优点:

  1. 数据恢复:MySQL日志可以用于故障恢复和数据恢复。通过使用二进制日志和事务日志,可以将数据库还原到出现故障之前的状态。
  2. 数据复制:MySQL的二进制日志可用于数据库复制。基于主从复制的架构中,主服务器将二进制日志传输到从服务器,以保持两个数据库的一致性。
  3. 性能分析:通过分析慢查询日志和错误日志,可以确定数据库中性能问题的根本原因。这有助于优化查询、索引和数据库设计。
  4. 安全审计:MySQL的日志功能可以用于安全审计目的。通过审计日志,可以跟踪对数据库的更改、登录尝试、访问控制等操作。

缺点:

  1. 占用存储空间:启用日志功能会占用一定的存储空间。特别是对于写密集型应用程序,二进制日志和事务日志的增长可能会导致大量的磁盘消耗。
  2. 对性能的影响:启用日志功能可能会对数据库的性能产生一定的影响,尤其是在高负载和写入频繁的情况下。写入日志需要额外的I/O操作,可能导致一定的延迟。
  3. 安全风险:如果未正确配置和保护日志文件,可能会面临安全风险。攻击者可以通过访问和篡改日志文件来操纵数据库或破坏数据完整性。

常见问题(FAQs)

  1. MySQL有哪些类型的日志? MySQL有多种类型的日志,包括二进制日志(binary log)、错误日志(error log)、查询日志(general query log)、慢查询日志(slow query log)和事务日志(transaction log)等。

  2. 二进制日志是什么? 二进制日志是MySQL记录所有修改数据的日志。它记录了所有的数据更改操作,如INSERT、UPDATE和DELETE语句,以及DDL语句(如CREATE TABLE)。二进制日志可以用于数据恢复、数据备份以及主从同步。

  3. 错误日志是什么? 错误日志记录了MySQL服务器在运行时发生的错误和警告信息。它可以帮助管理员快速定位和解决问题,并提供诊断信息以优化MySQL服务器的性能。

  4. 查询日志是什么? 查询日志记录了所有的客户端连接和执行的SQL语句。它可以用于调试和分析应用程序的性能和行为,但是由于记录所有的查询语句,因此可能会对性能产生负面影响。

  5. 慢查询日志是什么? 慢查询日志记录了执行时间超过设定阈值的SQL语句。它可以用于分析和优化查询性能,但是由于只记录执行时间超过阈值的查询语句,因此不会对性能产生太大影响。

  6. 事务日志是什么? 事务日志记录了所有的事务操作,包括事务的开始、提交和回滚等。它可以用于数据恢复和主从同步。

  7. 如何启用和配置MySQL日志? 可以通过修改MySQL配置文件来启用和配置MySQL日志。例如,可以设置log-bin选项来启用二进制日志,设置log-error选项来指定错误日志文件的路径和名称,设置log-queries-not-using-indexes选项来启用查询日志等。

你可能感兴趣的:(开发文档,mysql)