首页 > 其他分享 >揭秘高效日志管理:解锁数据宝藏,驱动业务精准决策

揭秘高效日志管理:解锁数据宝藏,驱动业务精准决策

时间:2024-09-14 14:53:19浏览次数:13  
标签:binlog log 二进制 解锁 mysql 日志 揭秘 GTID

  •  作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
  •  座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
  •  个人主页:团儿.-CSDN博客

目录

前言:

正文:

一.错误日志 ***

1.作用

2.默认配置

3.人为定制位置

二.二进制日志(binlog)******

1.作用

2.如何配置?

(1)参数介绍

(2) 参数配置

(3)创建目录和授权

3.二进制日志记录了什么?

3.1概括

3.2 DDL 和 DCL

3.3 DML

4.二进制日志记录单元

4.1 event 事件

4.2 event事件的开始和结束号码

5.二进制日志的管理

5.1 查看二进制日志位置

5.2 查看所有已存在的二进制日志

5.3 查看正在使用的二进制日志

5.4 查看二进制日志事件

5.5 查看二进制日志内容

5.6 截取二进制日志,还原

6. binlog的gtid记录模式的管理 ****

6.1 GTID介绍

6.2 GTID的组成

6.3 GTID的幂等性

6.4 GTID的开启和配置

6.5 查看GTID信息

6.6 基于GTID,binlog恢复

(1) 截取日志

(2)恢复

(3) 报错

(4)正确的做法?

(5) 恢复

三.慢日志(slow-log)

1.作用

2.如何配置

3.模拟慢查询

4.分析慢日志


前言:

在数据库管理系统中,日志扮演着至关重要的角色。MySQL,作为最流行的开源关系型数据库管理系统之一,其日志机制不仅记录了数据库的日常操作、用户行为,还包含了丰富的错误信息和性能数据。这些日志对于数据库的数据备份、恢复、性能调优、故障排查以及安全审计等方面具有不可替代的作用。

随着数据量的爆炸性增长和数据库应用的复杂化,如何高效地管理和利用MySQL日志成为了数据库管理员和开发者必须面对的重要课题。通过合理配置和监控日志,我们可以及时发现并解决潜在的问题,优化数据库性能,确保数据的完整性和安全性。

本文将深入探讨MySQL数据库的日志管理机制,包括错误日志、查询日志、慢查询日志以及二进制日志等不同类型的日志。我们将从日志的基本概念、配置方法、查看技巧以及应用场景等多个方面进行详细阐述,旨在帮助读者全面了解MySQL日志管理的各个方面,提升数据库管理的效率和水平。

无论是数据库初学者还是经验丰富的数据库管理员,本文都将为你提供宝贵的参考和实用的指导。让我们一同走进MySQL日志管理的世界,探索其中的奥秘与魅力。


正文:

一.错误日志 ***

1.作用

排查MySQL运行过程的故障.

2.默认配置

默认就开启了.

默认路径和名字: datadir/hostname.err

查看方法: [ERROR]

3.人为定制位置

log_error=/tmp/mysql3306.log

重启生效.

select @@log_error;                                                                                                                                                                                                                                                                                 


二.二进制日志(binlog)******

1.作用

(1) 主从要依赖二进制日志

(2) 数据恢复时需要依赖于二进制日志

2.如何配置?

(1)参数介绍

默认没有开启.

server_id=6

log_bin=/data/binlog/mysql-bin

说明:

mysql-bin  : 二进制日志文件名的前缀

例如: mysql-bin.000001  ,mysql-bin.000002 ......

binlog_format=row ---> 5.7版本默认配置是row,可以省略.

(2) 参数配置

查看二进制日志

show master status;

vim /etc/my.cnf

插入log_bin那行:

server_id=6

log_bin=/data/binlog/mysql-bin

binlog_format=row(设置为行格式    默认就是  不需要设置)

(3)创建目录和授权
mkdir -p /data/binlog

chown -R mysql.mysql /data

systemctl restart mysqld

3.二进制日志记录了什么?

3.1概括

记录的数据库所有变更类的操作日志.

DDL: create  drop alter

DCL: grant   revoke

DML: insert  update  delete

3.2 DDL 和 DCL

以语句的方式,原模原样的记录.

3.3 DML

(1) 他记录的已提交的事务

(2) DML记录格式(statement,row,mixed),通过binlog_format=row参数控制 ****

说明:

statement:SBR,语句模式记录日志,做什么命令,记录什么命令.

row  :RBR,行模式,数据行的变化

mixed  :MBR,混合模式

面试问题: SBR和RBR什么区别?怎么选择? ***

SBR:  可读性较强,对于范围操作日志量少,但是可能会出现记录不准确的情况.

RBR:  可读性较弱,对于范围操作日志大,不会出现记录错误.高可用环境中的新特性要依赖于RBR

为什么用RBR?

我们公司对数据的严谨性要求较高,也用到了新型的架构,所以选择RBR


4.二进制日志记录单元

4.1 event 事件

二进制日志的最小单元

DDL :  

create database event;  事件1

对于DDL等语句是每一个语句就是一个事件

DML: 一个事务包含了多个语句

begin;      事件1

a  事件2

b  事件3

commit;      事件4

4.2 event事件的开始和结束号码

作用:

方便我们从日志中截取我们想要的日志事件.

5.二进制日志的管理

5.1 查看二进制日志位置
show variables like '%log_bin%';

5.2 查看所有已存在的二进制日志
show binary logs;

 #刷新,产生新的二进制日志

flush logs;

show binary logs;

5.3 查看正在使用的二进制日志
show master status ;

5.4 查看二进制日志事件
create database binlog charset utf8mb4;

use binlog

create table t1(id int);

insert into t1 values(1);

show master status ;

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

   #查看日志中详细事件

5.5 查看二进制日志内容

mysqlbinlog mysql-bin.000001 #看语句级日志,不能看行数据

mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000001   #使用解码的方式,可看行数据

mysqlbinlog -d event mysql-bin.000001 #摘要显示事件号码

5.6 截取二进制日志,还原

mysqlbinlog --start-position=219(开始编号) --stop-position=758(结束编号) mysql-bin.000001 >/tmp/a.sql

set sql_log_bin=0;  

source /tmp/a.sql;

set sql_log_bin=1;  

6. binlog的gtid记录模式的管理 ****

6.1 GTID介绍

对于binlog中的每一个事务,都会生成一个GTID号码

DDL ,DCL 一个event就是一个事务,就会有一个GTID号.

DML语句来讲,begin到commit,是一个事务,就是一个GTID号

6.2 GTID的组成

server_uuid:TID

cat /usr/local/mysql/data/auto.cnf

[auto]

server-uuid=e2e9b01e-9687-11eb-b577-000c29b0384b

TID是一个:自增长的数据,从1开始

e2e9b01e-9687-11eb-b577-000c29b0384b:1-15

6.3 GTID的幂等性

如果拿有GTID的日志去恢复时,检查当前系统中是否有相同GTID号,有相同的就自动跳过

会影响到binlog恢复和主从复制.

6.4 GTID的开启和配置
vim /etc/my.cnf
gtid-mode=on

enforce-gtid-consistency=true

6.5 查看GTID信息
create database gtid charset utf8mb4;

show master status;

use gtid;

create table t1(id int);

show master status;

insert into t1 values(1);

commit;

show master status;

drop database gtid;

6.6 基于GTID,binlog恢复
(1) 截取日志

cd /usr/local/mysql/data/binlog/

set sql_log_bin=0;

source /tmp/gtid.sql

set sql_log_bin=1;

mysqlbinlog --include-gtids='820f8917-d358-11ec-b243-000c29cbdce4:1-3' mysql-bin.000001 >/tmp/gtid.sql

(2)恢复

(3) 报错

ERROR 1049 (42000): Unknown database 'gtid'

Query OK, 0 rows affected (0.00 sec)

ERROR 1046 (3D000): No database selected

为什么报错?

因为幂等性的检查,1-3事务已经做过了.

(4)正确的做法?

mysqlbinlog --skip-gtids --include-gtids='820f8917-d358-11ec-b243-000c29cbdce4:1-3' mysql-bin.000001 >/tmp/gtid.sql

--skip-gtids 作用:在导出时,忽略原有的gtid信息,恢复时生成最新的gtid信息

(5) 恢复
set sql_log_bin=0;

source /tmp/gtid.sql

set sql_log_bin=1;


三.慢日志(slow-log)

1.作用

记录运行较慢的语句,优化过程中常用的工具日志.

2.如何配置

## 查看慢日志状态

show variables like '%slow_query_log%';

## 开关

slow_query_log=1

## 文件位置及名字

slow_query_log_file=/data/slow.log

## 设定慢查询时间

long_query_time=0.1

## 没走索引的语句也记录

log_queries_not_using_indexes

vim /etc/my.cnf
slow_query_log=1

slow_query_log_file=/data/slow.log

long_query_time=0.1

log_queries_not_using_indexes

3.模拟慢查询

create database test;

use test;

source /root/t100w.sql

select * from t100w limit 100;

select * from t100w where id=1568;

select * from t100w where num=1100;

select * from t100w where num=102000 order by k1;

select * from t100w where k2='MN88';

4.分析慢日志

mysqldumpslow -s c -t 10 /data/slow.log


期待您的关注~

标签:binlog,log,二进制,解锁,mysql,日志,揭秘,GTID
From: https://blog.csdn.net/xyyy060908/article/details/142257278

相关文章

  • 《鸿蒙/Harmony | 开发日志》请求用户权限 & 打开应用设置界面
    鸿蒙的请求用户权限相对比较好用,下面的代码,基本是来源华为官方的文档,只需要封装一下,挺好用。鸿蒙的权限分类鸿蒙的权限分为两种系统权限(直接配置文件配置申请,不需要询问用户)需要用户手动确认的权限(必须提示用户主动授权)参考:《应用权限管控概述》在配置文件中设置需要申......
  • 《鸿蒙/Harmony | 开发日志》DevEco Studio 使用NewUI
    DevEco也是基于Jetbrain的IntelliJIDEA社区版开发。用习惯了Idea和AndroidStudio的新UI界面。看着旧版的界面风格太难了。官方没有提供改NewUI的方式,不过还是有其它的方法可以开启。只是有些功能可能没有那么好用,需要注意一下。不过在我用下来,目前的问题都能解决。开启N......
  • 剖析 SSO 和 OAuth:解锁单点登录与授权的技术密码
    一、概念介绍1.1SSO:单点登录SSO(SingleSign-On,单点登录)是一种身份验证方法,允许用户通过身份提供商(IdP)进行一次身份验证即可访问多个应用程序,它的核心目标是减少用户在不同系统之间重复输入用户名和密码的繁琐操作,提高用户体验和工作效率图片如图,SSO是抽出登录的模块,A......
  • 2024/9/13日 日志
    今天,系统的对代码进行了修改优化,对原有代码进行全面修改,并实现了工序对接功能。点击查看代码//信2305-2--20234023--张一衡importjava.awt.*;importjava.sql.SQLOutput;importjava.util.Scanner;importjava.util.Random;publicclassMoontest{publicstat......
  • 【安全运营】揭秘100个网络风险解决秘籍,让你安全畅游网络世界,不再怕风险!
    01账号密码安全(14条)如果有初始密码,应尽快修改;密码长度不少于8个字符;不要使用单一的字符类型,例如只用小写字母或只用数字;用户名与密码不要使用相同字符;常见的弱口令尽量避免设置为密码;自己、家人、朋友、亲戚、宠物的名字避免设置为密码;生日、结婚纪念日、电话号码等个人信......
  • 惊!网传xyz域名续费大涨价?真相揭秘:纯数字宝贝稳如老狗,价格依旧亲民笑哈哈!
    亲们,是不是最近朋友圈、微博里都被一条“劲爆”消息刷屏了?说是从9月2号起,那些闪闪发光的xyz域名,特别是那些6位纯数字的大佬们,续费价格要坐火箭上天了?......
  • 多次登录失败用户被锁定及使用Pam_Tally2解锁
    问题现象-Accountlocked   前些天服务器的root用户被锁定,导致无法登录服务器,提示:Accountlockeddueto10failedlogins,下面是解锁的全过程解决办法和解决的过程--常规找回密码中增加重置次数。1、开机时按e键进入编辑模式2、按方向键--向下定位找到ro一行,ro的......
  • Cursor超详细使用教程,从安装、订阅到高级技巧的全面教程-解锁 Cursor 的全部功能
    最近,编程圈子里大家都在讨论一个新工具——Cursor。朋友们都在说:“Cursor真是太棒了,我的编程效率飞速提升!”还有人说:“我彻底被Cursor给圈粉了,现在离不开它了!”看到大家对Cursor这么热衷,我也忍不住试用了两天。不出意外,我也被它的强大功能深深吸引了。Cursor确实是一......
  • 揭秘滚珠导轨承重极限:如何确保重载应用的稳定性与可靠性!
    滚珠导轨因其具有精度高、刚性高等特点,被广泛应用在各种机械设备中。而承重能力是其重要的性能指标之一,直接关系到导轨在实际应用中的稳定性和可靠性。滚珠导轨的承重能力主要取决于其结构和材料,滚珠导轨通过内部的滚珠实现滑动,这种设计显著减少了摩擦和磨损,从而提高了导轨的承重能......
  • 解锁CodeGeeX智能问答中3项独有的隐藏技能
    CodeGeeX在侧边栏提供的AskCodeGeeX智能问答功能,很多用户每天会通过它,解答编程和技术相关的各种问题。今天我们介绍侧边栏智能问答的3项隐藏技能。一、一键复制所有文本每次使用智能问答时,都会同时用到代码和文本的内容。当用户在侧边栏提问后,CodeGeeX提供了可以一键复制所有文本......