mysql 工具日志管理整理

achiverhai 2020-05-11

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

  mysql 工具日志管理整理

1.错误日志(log_error)

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

1.1 错误日志配置

默认就是开启的:  /数据路径下/hostname.err
查看错误日志位置:select @@log_error;

手工指定位置:
vim /etc/my.cnf
log_error=/var/log/mysql.log
log_timestamps=system
重启生效


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)

注意:MySQL默认是没有开启二进制日志的。

基础参数查看:
开关状态: select @@log_bin;
日志路径及名字:select @@log_bin_basename;
服务ID号: select @@server_id;
二进制日志格式: select @@binlog_format;
双一标准之二: select @@sync_binlog;

2.2.1 创建日志目录

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

2.2.2 修改配置文件

vim /etc/my.cnf


server_id=6 (取值1-65535)  5.6中,单机可以不需要此参数  

# log_bin有两种配置方式,如下讲解          
log_bin=1    只打开二进制日志开关,文件存放在默认的位置
log_bin=/data/binlog/mysql-bin    开启二进制日志,按照路径生成二进制文件,mysql-bin为指定的文件名前缀。
指定路径后会在其下额外生成个mysql-bin.index文件,其内存放的是二进制文件的名,便于统计

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 三种记录格式如何选取:

SBR与RBR模式的对比:


STATEMENT(SBR):可读性较高,日志量少,但是不够严谨
ROW(RBR)     :可读性很低,日志量大,足够严谨,一些高可用环境中的新特性要依赖RBR模式

示例:
update t1 set xx=xx where id>10   
SBR会把update语句记录下来,
RBR会把所有受影响的行的变化状态给记录下来

解析:
为什么说SBR不严谨或某些情况下不准确呢?
insert into t1 values(1,‘zs‘,now())这种场景下使用now获取时间场景


我们建议使用:row记录模式

相关推荐