kuwoyinlehe 2019-12-18
日志相关的常见问题:
(1)常用日志类型
(2)各种日志的配置和使用场景
log_error=$mysql/sql_log/mysql-error.log log_error_verbosity=[1,2,3] 5.7新增 错误日志中记录错误信息的级别;>select @@log_error_verbosity;注释:1:Error messages2:Error and warning messages3:Error,waring and note message
log_filter_internal: 默认的日志过滤组件,依赖log_error_verbosity log_sink_internal: 默认的日志输出组件,依赖log_error log_sink_json: 将错误日志输出到json文件 log_sink_syseventlog:将错误日志输出到系统日志文件
<span>UTC</span>
和
<span>SYSTEM</span>
,默认使用
<span>UTC</span>
。它还支持动态设置,不过建议大家在配置文件中就写上,以免重启之后造成不必要的麻烦。>select @@log_timestamps; >set GLOBAL log_timestamps = SYSTEM
②常规日志(general_log): 分析客户端发送到mysql的实际请求
general_log = [ON|OFF]/[1/0] general_log_file = $mysql/sql_log/general.log log_output = [file|table|none] show variables like ‘general_log‘;
③慢查日志(slow_query_log):a.将执行成功并符合条件的查询记录到日志中,b.找到需要优化的sql.
slow_query_log=[on|off] slow_query_log_file=$mysql/sql_log/slowlog.log long_query_time=XX秒 (可以精确到微秒)查询超过这个值才会被记录到slowlog中,互联网行业中一般设置0.001s比较合适。 set global long_query_time=0.001. 只对新建立的连接起作用。设置为0 是记录所有sql. log_queries_not_using_indexes=[on|off] log_slow_admin_statements=[on|off].设置为on时将会记录管理类命令比如create drop等。 log_slow_slave_statements=[on|off] 。前提要开启binlog.
④二进制日志(binary_log):a.记录所有对数据库中数据的修改;b.基于时间点的备份和恢复;c.高可用架构的基础-主从复制
常用配置参数: log_bin = [base_name] 静态参数 只能在my.cnf中配置 重启服务后生效。 5.7之前一般不会启用这个参数。 binlog_format = [row/statement/mixed] 动态参数。 5.7之后默认row 主从复制中安全性比较高 binlog_row_image = [full/minimal/noblob] minimal 只会记录被修改的值,noblob会记录除blob外的所有修改前修改后的值。full没修改的列对应值也会记录。 set session binlog_row_image = ‘minimal‘; binlog_rows_query_log_events = [on|off] 会同时记录执行的sql语句 log_slave_updates = [on|off] 默认情况下slave不会记录同步主库过来的binlog日志,有些情况比如级联复制 slave是另一个mysql实例的主,还有需要gtid复制。都需要记录从主从同步过来的binlog日志。 sync_binlog = [1|0] 控制如何刷新二进制日志到磁盘,mysql每写一次二进制日志都会向磁盘刷新一次。二进制日志的清除: expire_logs_days = days 动态参数 purge binary logs to ‘mysql-bin.010‘ 将指定日志前的二进制日志都删除。 purge binary logs before ‘yyyy-mm-dd hh24:mi:ss‘;删除指定日期前的日志。 ⑤中继日志(relay_log): relay_log = filename 指定relay log存放位置和名称。 relay_log_purge = [on|off] 自动清理