1. 相关面试问题
常用的mysql 日志有哪些?我们在什么情况下使用这些日志? 如何通过日志来审计用户活动?
2. 常用的mysql 日志及使用场景
知识点:
- mysql 常用的日志类型
- 各种日志的配置和使用场景
2.1 mysql 常用的日志类型
【注】 bin_log: 主服务器上必须有; relay_log: 可看成主服务器上的二进制日志在从服务器上的副本;
err_log
- 分析排除mysql 运行错误
- 记录未经授权的访问
- 记录位置 :
log_error = $mysql/sql_log/mysql-error.log - 错误级别 :
log_error_verbosity = [1,2,3] log_error_services = [日志服务组件; 日志服务组件] mysql 8.0 中增加
general_log
- 分析客户端发送到mysql 的实际请求
- 配置:
general_log = [ON | OFF] 默认是关闭, 可以用set 开启 - 存储路径:
general_log_file = $mysql/sql_log/general.log - 还可以存储在文件、表中 :
log_output = [FILE | TABLE |NONE]
慢查询日志 slow_query_log
- 将执行成功并符合条件的查询记录到日志中
- 找到需要优化的sql (执行时间长, 没有使用索引等)
- 配置 :
slow_query_log = [ON | OFF] 默认是关闭的 - 存储路径:
slow_query_log = $mysql/sql_log/slow_query.log - long_query_time = xx(秒) 当sql执行时间超过这个时间就会记录;设置为0,则记录所有sql记录
- log_queries_not_using_indexes = [ON | OFF] 开启后,没有使用索引则会被记录
- log_slow_admin_statements = [ON | OFF] 开启后记录管理命令
- log_slow_slave_statements = [ON | OFF] 很少使用
二进制日志 (binary_log) 非常重要
- 记录所有对数据库中数据的修改 (show, slect 不会被记录)
- 基于时间点的备份和恢复
- 主从复制(高可用实现必不可少)
- 配置: log-bin [= base_name] 静态参数,在配置文件才能修改
- binlog_format = [ROW | STATEMENT | MINED] 格式化, 默认 ROW
- binlog_row_image = [FULL | MINIMAL | NOBLOB ] 默认 FULL
- binlog_rows_query_log-events= [ON | OFF] 开启后能记录实际执行的sql 语句,默认关闭
- log_slave_updates = [ON | OFF] 默认关闭
- sync_binlog = [1 | 0 ] 默认 1 ;表示控制主动向磁盘刷新, 如果是0, 不会主动刷新
- expire_logs_days = days 设置过期时间
- PURGE BINARY LOGS TO ‘mysql-bin.010’ 删除之前的文件
- PURGE BINARY LOGS TO BEFROE ’2022-04-03 22:22:22‘ 表示删除小于这个日期的日志文件
中继日志(relay_log)
- 临时记录从主服务器同步的二进制日志
- 配置:relay_log = filename
- relay_log_purge = [ON | OFF] 表示是否对它进行清理
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习
|