mysql 工具日志管理整理

Posted quzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 工具日志管理整理相关的知识,希望对你有一定的参考价值。

mysql提供的工具类日志种类:

  技术图片

 

1.错误日志(log_error)

  用来记录启动关闭日常运行过程中,状态信息,警告,错误。默认是开启的

1.1 错误日志配置

 1 默认就是开启的:  /数据路径下/hostname.err
 2 查看错误日志位置:select @@log_error;
 3 
 4 手工指定位置:
 5 vim /etc/my.cnf
 6 log_error=/var/log/mysql.log
 7 log_timestamps=system
 8 重启生效
 9 
10 
11 show variables like log_error;

1.2 日志内容查看

1 主要关注[ERROR],看上下文

 

2. binlog(binary logs):二进制日志

2.1 作用

1 备份恢复必须依赖二进制日志
2 主从环境必须依赖二进制日志
3 5.x以上版本默认都没有开启二进制日志,需要手动配置来启用

2.2 binlog配置 (5.7必须加server_id)

1 注意:MySQL默认是没有开启二进制日志的。
2 
3 基础参数查看:
4 开关状态: select @@log_bin;
5 日志路径及名字:select @@log_bin_basename;
6 服务ID号: select @@server_id;
7 二进制日志格式: select @@binlog_format;
8 双一标准之二: select @@sync_binlog;

2.2.1 创建日志目录

1 mkdir /data/binlog
2 chown -R mysql.mysql /data/binlog

2.2.2 修改配置文件

 1 vim /etc/my.cnf
 2 
 3 
 4 server_id=6 (取值1-65535)  5.6中,单机可以不需要此参数  
 5 
 6 # log_bin有两种配置方式,如下讲解          
 7 log_bin=1    只打开二进制日志开关,文件存放在默认的位置
 8 log_bin=/data/binlog/mysql-bin    开启二进制日志,按照路径生成二进制文件,mysql-bin为指定的文件名前缀。
 9 指定路径后会在其下额外生成个mysql-bin.index文件,其内存放的是二进制文件的名,便于统计
10 
11 binlog_format=row    5.7默认的配置,可省略

2.2.3 重启数据库生效

2.2.4 参数说明

server_id=3306 
主要是在主从复制过程中必须要加的,但是在5.7版本中,要用以下参数(log_bin),开启binlog日志,即使是单机也是必加的

log_bin=/data/binlog/mysql-bin
(1)开启二进制日志功能
(2)设置二进制日志目录及名称前缀
binlog_format
=row binlog中记录dml语句的记录格式

2.3 binlog记录了什么?

2.3.0 引入

1 binlog是SQL层的功能。记录的是变更SQL语句,不记录查询语句。

2.3.1 记录SQL语句种类

DDL :原封不动的记录当前DDL(statement语句方式)。
DCL :原封不动的记录当前DCL(statement语句方式)。
DML :只记录已经提交的事务DML

2.3.2 DML三种记录格式,仅对dml语句有效

binlog_format=xx(binlog的记录格式)参数影响,取值如下:
(1)statement(5.6默认)SBR(statement based replication) :语句模式原封不动的记录当前DML。
(2)ROW(5.7 默认值) RBR(ROW based replication)       :记录数据行的变化(用户看不懂,需要工具分析)
(3)mixed(混合)MBR(mixed based replication)模式      :以上两种模式的混合

2.3.3 三种记录格式如何选取:

 1 SBR与RBR模式的对比:
 2 
 3 
 4 STATEMENT(SBR):可读性较高,日志量少,但是不够严谨
 5 ROW(RBR)     :可读性很低,日志量大,足够严谨,一些高可用环境中的新特性要依赖RBR模式
 6 
 7 示例:
 8 update t1 set xx=xx where id>10   
 9 SBR会把update语句记录下来,
10 RBR会把所有受影响的行的变化状态给记录下来
11 
12 解析:
13 为什么说SBR不严谨或某些情况下不准确呢?
14 insert into t1 values(1,zs,now())这种场景下使用now获取时间场景
15 
16 
17 我们建议使用:row记录模式

 

以上是关于mysql 工具日志管理整理的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

硬核!管理mysql数据库的工具

4 款 MySQL Binlog 日志处理工具对比

YASnippet - emacs 的代码片段管理工具

MySQL------MySQL日志管理,备份与恢复

Linux:crontab要点整理(表达式,转义,权限管理,日志)