MYSQL log_error_verbosity 和 Binlog_error_action

2020-11-15 00:00:00 参数 设置 信息 告警 写入

MYSQL 的错误日志的详细度其实不少人是忽略的,实际上MYSQL这边的关于告警和错误日志本身也是有一些注意的地方.


在PERCONA MYSQL5.7.2X中发现一个问题,当在MY.CNF文件中如果加入了

log_error_verbosity  的细致粒度的选择项,则MYSQL 将不在系统启动后打印详细的启动的过程, 如果想打印的情况下则不能在配置文件中设置,只能在系统启动后,设置log_error_verbosity 的状态.


不设置  log_error_verbosity ,系统重启动是可以记录相关详细的信息


如果打开后则,详细度大大降低


这里可能有MYSQL的老用户会提出,我们不用这个参数,我们使用的参数是

--log-warnings, 实际上这个参数已经被  log_error_verbosity 代替了,

从MYSQL 8.03 开始--log-warnings 参数已经被取消掉了.



那我们怎么做1 在PERCONA 版本的MYSQL 5.7 这个版本中,不要设置 log_error_verbosity, 同时我们在开启服务器后,在系统中运行.

set global log_error_verbosity = 2;


在关闭服务器之前,执行 set global log_error_verbosity = 0;


实际上在如果之前使用 log_warnings 则 log_warnings = 1 改变到2 ,等同于log_error_verbosity = 3 , 部分版本的系统 log_error_verbosity=2 ,log_warnings = 0 , 等同于 log_error_verbosity = 1 ,


log_warnings 为0, 表示不记录告警信息。

log_warnings 为1, 表示告警信息写入错误日志。

log_warnings 大于1, 表示各类告警信息,例如有关网络故障的信息和重新连接信息写入错误日志。

在mysql8 , 默认设置为2 


另外MYSQL中 有对BINLOG 的保护设置 Binlog_error_action, 其中有两个选项IGNORE_ERROR 和 ABORT_SERVER, 在MYSQL 5.7.7 中默认是 abort_server, 这个参数主要的含义是,在发现BINLOG无法写入后,是选择继续提供服务,还是停止服务,并且将没有运行的事务进行回滚.

这里面需要根据情况来选择,例如如果是一些不重要的数据库,并且缺少监控或者磁盘空间紧张,或者日志生成的太快,可以考虑使用 IGNORE_ERROR, 这样会降低服务器突然宕机的可能性,但需要注意的是,如果选择这个参数则需要考虑在服务无法写入BINLOG 后,还继续工作的情况下,空间在恢复后,日志不会在写入,必须重新启动MYSQL 后,才能恢复BINLOG 的写入.但集群方式的MYSQL不建议这样设置.



相关文章