学习mysql第六天--日志管理

1. 普通日志

(1)介绍
默认是关闭的. 可以记录MySQL中发生过的所有操作日志.一般用来调试.
(2)如何配置
general_log = ON
general_log_file = /data/3306/db01.log
(3)作用
审计 调试

2. 错误日志

(1)作用

记录mysql从启动以来,所有的状态,警告,错误
为我们定位数据库问题,提供帮助

(2)配置方法

默认:开启状态
位置:/data/mysql/hostname.err 主机名.err ;
查看数据目录位置:mysql> select @@datadir;
修改错误日志存放的位置:
在配置文件里:log_error=/tmp/mysql.log
重启生效:/etc/init.d/mysql restart
注意:目录必须其他要有,子文件不能重复,并且要有mysql权限

(3)怎么看错误日志

当启动数据库失败时:
Vim /tmp/mysql.log
找error

3. binlog日志

(1)作用

主要记录数据库变化(DDL DCL DML)
数据恢复,主从复制中应用

(2)如何配置

默认:8.0版本以前,没有开启 ,我们建议生产开启
配置过程:说明:一定要和数据盘分开

Mkdir -p /data/binlog
Chown -R mysql.mysql /data/*
vim etc/my.cnf
server_id=6      
log_bin=/data/binlog/mysql-bin   
sync_binlog=1      
binlog_format=row  

配置文件介绍:

server_id=6  #主机编号。主从中使用,5.7以后开binlog要加此参数
log_bin=/data/binlog/mysql-bin   #日志存放目录+日志名前缀,例如: 
mysql-bin.000001  mysql-bin.000002
sync_binlog=1  # binlog日志刷盘策略,双一中的第二个1。每次事务提交立即刷写binlog到盘。
重启生效:
# /etc/init.d/mysqld restart 

(3)binlog记录了什么?

1> 引入
binlog是SQL层的功能。记录的是变更SQL语句,不记录查询语句。
2> 记录SQL语句种类

DDL :原封不动的记录当前DDL(statement语句方式)。
DCL :原封不动的记录当前DCL(statement语句方式)。
以上2个写什么 记录什么 
DML :只记录已经提交的事务DML(install ,updata ,delete)

3> 三种记录方式

1)statement(5.6默认)SBR(statement based replication) :语句模式原封不动的记录当前DML。
2)ROW(5.7 默认值)  RBR  (ROW based replication) :记录数据行的变化(用户看不懂,需要工具分析)
3)mixed(混合)MBR  (mixed based replication)模式  :以上两种模式的混合
SBR与RBR模式的对比:
SBR:可读性较高,日志量少,但是不够严谨
RBR:可读性很低,日志量大,足够严谨

(4)event(事件)是什么?

1> 事件的简介
二进制日志的最小记录单元是事件
对于DDL,DCL,一个语句就是一个event
对于DML语句来讲:记录事务的整个生命周期包括:Bing–语句–commit三个

2> event的组成

三部分构成:				position号:
(1) 事件的开始标识  		begin   120 - 340
(2) 事件内容				DML	340 - 460
(3) 事件的结束标识			commit	460-550

Position号是在每个过程后面,是为了数据恢复
开始begin标识: at 194
结束commit标识: end_log_pos 254
194? 254?
某个事件在binlog中的相对位置号

(5) binlog的查看

1> 查看日志的开启情况
Select @@log_bin;查看是否开启1开启
Select @@log_bin_basename;位置
2> 文件查看
[root@db01 binlog]# ll /data/binlog/
mysql-bin.000001
mysql-bin.index 存到当前日志的日志点

3> 二进制日志内置查看命令

(1)查看目前库有几个日志文件
mysql> show binary logs;
只用新出来的日志,喜新厌旧
(2)查看当前在用的binlog
mysql> show master status;
(3)查看二进制日志事件 。
mysql> show binlog events in 'mysql-bin.000001';

只关注Query 下面的即可
POS:是开始Position号 end_log_bin:是Position结束号
DML语句是从begin到commit是一个事务

(6)binlog 文件内容查看及数据恢复

1)事件查看

查看 drop的日志
Mysql -u root -p 123 -e “show binlog events in ‘mysql-bin.00001’” | grep DROP

2)内容查看

[root@db01 binlog]# mysqlbinlog mysql-bin.000001 >/tmp/a.sql  
Mysql 专门提供了工具mysqlbinlog 将日志导出到/tmp 目录下

[root@db01 binlog]# vim /tmp/a.sql 

(7)Binlog 的GTID模式管理

1)GTID介绍

 5.6版本新加的特性,  5.7   8.0 中做了加强 
 5.6中不开启,没有这个功能
 5.7 中的GTID ,即使不开也会自动生成
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'

2)GTID(Glodal Transaction ID)
Gtid是一个已提交事务的编号,并且是一个全局唯一的编号,主要是保证主从一致性
他的官方定义如下:

Gtid=server_id+ 事务id
GTID=server_uuid  : transaction_id 
7E11FA47-31CA-19E1-9E56-C43AA21293967:29

3)重要参数介绍
开启GTID 生产中已经开启
vim /etc/my.cnf
gtid-mode=on
enforce-gtid-consistency=true
以上2给是开启gtid是必须的
systemctl restart mysqld

查看GTID :
Select @@gtid_mode; 查看是否开启 on开启
Show master status; 查看有几个gtid号,冒号后面就是gtif个数
Show binlog events in ‘mysql-bin.000001’;

4)基于gtid截取binlog日志
具备gtid后,截取查看某些事务日志:
–include-gtids 需要的gtid
–exclude–gtids 排除不需要的gtid
–skip-gtids .跳过导出文件gtid的记录.

5)GTID的幂等性
开启GTID后, binlog 就具有幂等性,MySQL恢复Binlog时,截取的binlg日志里就有gtid号,会导致恢复不了,所以在截取时要加–skip-gtids;跳过gtid,截出来的日志中就没有gtid号,这样才能恢复数据
就想恢复?怎么办?
因为截取的日志里有gtid,所有恢复不成功,所以要跳过–skip-gtids;
完整代码:

mysqlbinlog --skip-gtids--include-gtids=
"2721a770-bc8e-11ed-b313-000c2924155e:3-8" 
mysql-bin.000002 mysql-bin.000003 mysql-bin.000004mysql-bin.000005 >/tmp/gtid1.sql

set  sql_log_bin=0;
source /tmp/binlog.sql
Set  sql_log_bin=1;

查看uuid:Select @@server_uuid;
如果删除了uuid会在系统启动时自动生成uuid

4 slowlog 慢日志

(1)作用

记录mysql运行过程中较慢的语句,通过一个文本的文件记录下来
帮助我们进行语句优化工具日志。

(2)如何配置

默认慢日志没有开启
配置参数:
select @@slow_query_log;[ˈkwɪəri]查询是否开启 0 是关闭, 1是开启
Select @@slow_query_log_file; 文件存放位置

慢语句认定的时间:就是超过多长时间算慢
Select @@long_query_time; 秒 (一般设置1秒)

查看不走索引的语句:0关闭–打开后会把不走索引的语句记录下来
Select @@log_queries_not_using_indexes;

开启慢日志:
Vim /etc/my.cnf
slow_query_log=1
slow_query_log_file= /data/3306/db01-slow.log
long_query_time=1
log_queries_not_using_indexes=1

(3)慢语句分析

Linux中清空文件:> 文件名;
MySQL给我们提供了专用的工具 mysqldumpslow
查看慢语句:
Mysqldumpslow -s c -t 5 /data/3306/db01-slow.log
-s 排序 -c 次数 -t 查看几行
将语句取出来进行desc,查看他的执行计划从而进行优化
工具:Pt-query-digest + Amemometer 工具可以写简历:可视化展示慢语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值