zlk管理mysql日志_MySQL 日志管理 (一)

错误日志(log_error)

记录启动\关闭\日常运行过程中,状态信息,警告,错误

默认就是开启的: /数据路径下/hostname.err

配置:

vi /etc/my.cnf

log_error=/var/log/mysql.log

log_timestamps=system

# 重启生效

查看方式

select @@log_error;

+---------------------+

| @@log_error |

+---------------------+

| /var/log/mysqld.log |

+---------------------+

show variables like 'log_error';

+---------------+---------------------+

| Variable_name | Value |

+---------------+---------------------+

| log_error | /var/log/mysqld.log |

+---------------+---------------------+

binlog(binary logs):二进制日志

作用

(1)备份恢复必须依赖二进制日志

(2)主从环境必须依赖二进制日志

binlog配置 (5.7必须加server_id)

# 是否开启 log_bin 日志

select @@log_bin;

+-----------+

| @@log_bin |

+-----------+

| 1 |

+-----------+

# 日志的名字及位置

select @@log_bin_basename;

+--------------------------+

| @@log_bin_basename |

+--------------------------+

| /var/lib/mysql/mysql-bin |

+--------------------------+

# 服务ID号

select @@server_id;

+-------------+

| @@server_id |

+-------------+

| 1 |

+-------------+

# 二进制日志格式:

select @@binlog_format;

+-----------------+

| @@binlog_format |

+-----------------+

| ROW |

+-----------------+

# 双一标准之二:

select @@sync_binlog;

+---------------+

| @@sync_binlog |

+---------------+

| 1 |

+---------------+

binlog记录了什么

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

记录SQL语句种类:

(1) DDL :原封不动的记录当前DDL(statement语句方式)。

(2) DCL :原封不动的记录当前DCL(statement语句方式)。

(3) DML :只记录已经提交的事务DML

DML三种记录方式

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)模式 :以上两种模式的混合

binlog的记录格式对比:

STATEMENT:可读性较高,日志量少,但是不够严谨,例如:语句中有 now()

ROW :可读性很低,日志量大,足够严谨

建议使用: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中的相对位置号

位置号的作用是什么?为了方便我们截取事件

日志文件查看

根据 log_bin 参数设置的路径,可以找到二进制日志

show variables like '%log_bin%';

+---------------------------------+--------------------------------+

| Variable_name | Value |

+---------------------------------+--------------------------------+

| log_bin | ON |

| log_bin_basename | /var/lib/mysql/mysql-bin |

| log_bin_index | /var/lib/mysql/mysql-bin.index |

| log_bin_trust_function_creators | OFF |

| log_bin_use_v1_row_events | OFF |

| sql_log_bin | ON |

+---------------------------------+--------------------------------+

查看一共多少个binlog

show binary logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 177 |

| mysql-bin.000002 | 1476 |

| mysql-bin.000003 | 217 |

| mysql-bin.000004 | 376 |

| mysql-bin.000005 | 257 |

| mysql-bin.000006 | 416 |

| mysql-bin.000007 | 257 |

| mysql-bin.000008 | 257 |

| mysql-bin.000009 | 257 |

| mysql-bin.000010 | 257 |

| mysql-bin.000011 | 722 |

| mysql-bin.000012 | 257 |

| mysql-bin.000013 | 1663 |

| mysql-bin.000014 | 257 |

| mysql-bin.000015 | 257 |

| mysql-bin.000016 | 530 |

| mysql-bin.000017 | 530 |

| mysql-bin.000018 | 234 |

+------------------+-----------+

可以使用下面语句来刷新 bin_log 日志

flush logs;

查看mysql正在使用的日志文件

# file:当前MySQL正在使用的文件名

# Position:最后一个事件的结束位置号

show master status;

55fb0552995a04e988ff30cdbbd22675.png

日志内容查看

event查看

show binlog events in 'mysql-bin.000006';

3f138e60dee15ce0b0381c53ff327685.png

Log_name: bin_log 文件名

Pos: 开始的position *****

Event_type: 事件类型

Format_desc: 格式描述,每一个日志文件的第一个事件,多用户没有意义,MySQL识别binlog必要信息

Server_id: mysql 服务号标识

End_log_pos: 事件的结束位置号 *****

Info: 事件内容*****

补充:

SHOW BINLOG EVENTS

[IN 'log_name']

[FROM pos]

[LIMIT [offset,] row_count]

eg: mysql -e "show binlog events in 'mysql-bin.000004'" |grep drop

# 获取前 5 条记录

show binlog events in 'mysql-bin.000013' limit 5;

# 从第 5 条记录开始,获取 5 条记录

show binlog events in 'mysql-bin.000013' limit 5,5;

# 从位置 911 开始,获取 3 条记录

show binlog events in 'mysql-bin.000013' from 911 limit 3;

binlog文件内容详细查看

mysqlbinlog /var/lib/mysql/mysql-bin.00001

mysqlbinlog --base64-output=decode-rows -vvv /var/lib/mysql/mysql-bin.00001

# 查看指定库的日志

mysqlbinlog -d klvchen /var/lib/mysql/mysql-bin.00001

# 指定时段查看日志

mysqlbinlog --start-datetime='2019-05-06 17:00:00' --stop-datetime='2019-05-06 17:01:00' /var/lib/mysql/mysql-bin.000001

基于 Position 号进行日志截取

核心就是找截取的起点和终点

--start-position=321

--stop-position=513

mysqlbinlog --start-position=219 --stop-position=1347 /var/lib/mysql/mysql-bin.000013 >/tmp/bin.sql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值