mysql日志管理

错误日志

mysql> select @@log_error;

二进制日志

作用

记录MySQL运行过程中,变更类的语句(DDL,DML,DCL…)
可以用来做数据恢复和主从复制。

配置

mysql> select @@server_id;         # 主机ID,用来主从复制的不同节点
mysql> select @@log_bin;           # 二进制日志开关,也可以设置binlog存放位置和名称
mysql> select @@log_bin_basename;  # 设置binlog存放位置和名称,可省略
mysql> select @@binlog_format;     # 二进制日志记录格式。保持默认row即可。
mysql> select @@sync_binlog;       # binlog刷新策略。保持默认为1即可。

log_bin=/data/3306/binlog/mysql-bin #文件名称前缀

日志的格式

DDL 、DCL : 记录MySQL语句
DML       : insert、update、delete。
--- 1. 只会记录已经提交的事务语句。
--- 2. 记录格式受到binlog_format影响。
--- binlog_format=格式
--- RBR : 行模式。默认模式。row
--- SBR :语句模式statement
--- MBR :混合模式mixed

RBR和SBR区别

RBR 行模式记录binlog。记录的是9个数据行每行变化日志。日志量相对较大。记录准确。
SBR 语句模式记录binlog。记录的语句本身。SBR,日志量相对较小。记录可能不准确。

记录单元

event(事件)binlog 记录的最小单元。
DDL , DCL : 一条语句就是一个event。
DML        : 一个事务型操作有多个event构成
begin;      e1
DML1        e2
DML2        e3
COMMIT;     e4

日志的查看

show binary logs; #查看日志的大小
max_binlog_size; #设置日志的大小
show master status ; #查看当前所在的日志
flush logs; #创建一个新日志,切换过去,重启也触发这个效果
show binlog events in 'mysql-bin.000003'; #查看日志里发生的事件,pos(position)标记
普通查看
mysqlbinlog /data/3306/binlog/mysql-bin.000004
基于row记录查看
mysqlbinlog --base64-output=decode-rows -v  /data/3306/binlog/mysql-bin.000004
过滤数据库
mysqlbinlog -d crm mysqld-bin.000001

日志的清理

PURGE BINARY LOGS TO ‘mysql-bin.000004’ 清理之前的日志
reset master 全部清理

日志实现恢复数据

  1. 查看创建库的起点和删除库的起点
mysql -e "show binlog events in 'mysql-bin.000001';" |grep -Ei "drop database test|create database test"
  1. 截取日志
mysqlbinlog --start-position=1085 --stop-position=1949 mysql-bin.000004  >/tmp/bin.sql
  1. 恢复数据
mysql> set sql_log_bin=0; #恢复的操作不用写入日志
mysql> source /tmp/bin.sql
mysql> set sql_log_bin=1;

gtid

pos号的方式因为每个文件的pos号不是唯一的,如果文件过多,截取次数就会变多

所有GTID号码是从1开始有序生成的。
GTID模式下的日志,是具备幂等性的(重复的事情不会重复执行)。

server_uuid:ID
server_uuid介绍:
mysql> select @@server_uuid;
+--------------------------------------+
| @@server_uuid                        |
+--------------------------------------+
| 09a8c1af-6e45-11ea-a381-000c29248f69 |
+--------------------------------------+
在第一次初始化,启动数据库时,自动生成的。存在/data/3306/data/auto.cnf文件中。
一旦被删除,被修改,下次重启重置。

ID值的介绍: 
	DDL ,DML :一个事件记录一个ID 
	DML       :一个完整的事务,记录一个ID

开启方式

select @@gtid_mode;
select @@enforce_gtid_consistency; #幂等性

恢复数据

mysqlbinlog --skip-gtids --include-gtids='09a8c1af-6e45-11ea-a381-000c29248f69:1-3' /data/3306/binlog/mysql-bin.000007 >/tmp/gtid1.sql
#恢复1 2 3 id的事件,--skip-gtids忽略幂等性,每次执行都需要加上

截取时排除某些id

mysqlbinlog --skip-gtids --include-gtids='09a8c1af-6e45-11ea-a381-000c29248f69:1-10' --exclude-gtids='09a8c1af-6e45-11ea-a381-000c29248f69:4','09a8c1af-6e45-11ea-a381-000c29248f69:7' /data/3306/binlog/mysql-bin.000007 >/tmp/gtid2.sql

多文件截取

mysqlbinlog --skip-gtids --include-gtids='09a8c1af-6e45-11ea-a381-000c29248f69:1-48' /data/3306/binlog/mysql-bin.000007 /data/3306/binlog/mysql-bin.000008>/tmp/gtid1.sql

慢日志

配置

mysql> select @@slow_query_log;
mysql> select @@slow_query_log_file;
mysql> select @@long_query_time; #执行的语句达到多少时间才记录,建议每月逐渐降低指标
mysql> select @log_queries_not_using_indexes; #不走索引的语句也记录

分析

mysqldumpslow  -s c -t 3 db01-slow.log
#s排序 c按照访问次数排序 t head的意思
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值