mysql日志介绍

错误日志(log_error)--记录启动关闭日常运行过程中,状态信息,警告,错误
默认就是开启的: /数据路径下/hostname.err 手工设定: Master [(none)]>select @@log_error; vim /etc/my.cnf log_error=/var/log/MySQL.log log_timestamps=system 重启生效 show variables like 'log_error';
 
默认位置:DATADIR/hostname.err
配置方式
vim .etc/my.cnf
log_error=/data/mysql/data/mysql.log
查看:
 
mysql> select @@log_error;+----------------------+| @@log_error|+----------------------+| /data/3307/mysql.log |+----------------------+1 row in set (0.00 sec) 
binlog(binary logs):二进制日志 *****(1)备份恢复必须依赖二进制日志(2)主从环境必须依赖二进制日志binlog配置 (5.7必须加server_id)注意:MySQL默认是没有开启二进制日志的 。基础参数查看: 开关: [(none)]>select @@log_bin; 日志路径及名字 [(none)]>select @@log_bin_basename; 服务ID号: [(none)]>select @@server_id; 二进制日志格式: [(none)]>select @@binlog_format; 双一标准之二: [(none)]>select @@sync_binlog;
 

log_error=
/data/mysql/data/mysql.log
log_bin=
/data/binlog/3306/mysql-bin #/data/binlog/3306/ :目录 mysql-bin:文件名
 
[root@localhost 3306]# pwd/data/binlog/3306[root@localhost 3306]# ll总用量 8-rw-r----- 1 mysql mysql 154 9月4 13:51 mysql-bin.000001-rw-r----- 1 mysql mysql35 9月4 13:51 mysql-bin.index 
查看配置
 
mysql> show variables like '%log_bin%';+---------------------------------+-----------------------------------+| Variable_name| Value|+---------------------------------+-----------------------------------+| log_bin| ON|| log_bin_basename| /data/binlog/3306/mysql-bin|| log_bin_index| /data/binlog/3306/mysql-bin.index || log_bin_trust_function_creators | OFF|| log_bin_use_v1_row_events| OFF|| sql_log_bin| ON|+---------------------------------+-----------------------------------+6 rows in set (0.00 sec) 
binlog记录了什么?-----binlog是SQL层的功能 。记录的是变更SQL语句,不记录查询语句 。
记录SQL语句种类DDL :原封不动的记录当前DDL(statement语句方式) 。DCL :原封不动的记录当前DCL(statement语句方式) 。DML :只记录已经提交的事务DMLDML三种记录方式binlog_format(binlog的记录格式)参数影响(1)statement(5.6默认)SBR(statement based replication) :语句模式原封不动的记录当前DML 。(2)ROW(5.7 默认值)RBR(ROW based replication) :记录数据行的变化(用户看不懂,需要工具分析)(3)mixed(混合)MBR(mixed based replication)模式 :以上两种模式的混合
mysql日志介绍

文章插图
 
 mysql> show variables like 'bnlog_format';+---------------+-------+| Variable_name | Value |+---------------+-------+| binlog_format | ROW|+---------------+-------+1 row in set (0.00 sec) 
面试题 
SBR与RBR模式的对比STATEMENT:可读性较高,日志量少,但是不够严谨ROW:可读性很低,日志量大,足够严谨update t1 set xxx=xxx where id>1000? -->一共500w行,row模式怎么记录的日志为什么row模式严谨?idnameintimeinsert into t1 values(1,'zs',now())我们建议使用:row记录模式 
event(事件)是什么?事件的简介
二进制日志的最小记录单元
对于DDL,DCL,一个语句就是一个event
对于DML语句来讲:只记录已提交的事务 。
例如以下列子,就被分为了4个event
begin; 120 - 340
DML1 340 - 460
DML2 460 - 550
commit; 550 - 760
event的组成
三部分构成:
(1) 事件的开始标识
(2) 事件内容
(3) 事件的结束标识
Position:
开始标识: at 194
结束标识: end_log_pos 254
194? 254?
某个事件在binlog中的相对位置号
位置号的作用是什么?
为了方便我们截取事件
查看一共多少个binlog 
Master [(none)]>show binary logs;+------------------+-----------+| Log_name| File_size |+------------------+-----------+| mysql-bin.000001 |154 |+------------------+-----------+1 row in set (0.01 sec)Master [(none)]>flush logs;Query OK, 0 rows affected (0.03 sec)Master [(none)]>flush logs;Query OK, 0 rows affected (0.01 sec)Master [(none)]>show binary logs;+------------------+-----------+| Log_name| File_size |+------------------+-----------+| mysql-bin.000001 |201 || mysql-bin.000002 |201 || mysql-bin.000003 |154 |+------------------+-----------+3 rows in set (0.00 sec)Master [(none)]>


推荐阅读