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

news2024/11/23 7:28:39
  •  作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
  •  座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
  •  个人主页:团儿.-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


期待您的关注~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2134906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

duckdb 连接postgres 和 jdbc 的使用

why? 主要是特别快 嵌入式,不需要服务器,使用超级方便 扩展机制灵活,可以直接读取CSV、JSON、Parquet等文件 Parquet文件格式详解(含行、列式存储区别)_parquet格式-CSDN博客 采用列式存储(用…

边缘计算网关:连接中心计算与边缘设备的重要桥梁-天拓四方

一、边缘计算网关:重新定义信息高速公路的“路标” 边缘计算网关,作为边缘计算生态系统中的核心组件,不仅承载着数据传输的功能,更是智能信息处理的关键节点。它通过分布式计算架构,将数据处理任务前置到网络边缘&…

JDK 收费了,怎么应对?难道 JDK 8 一直用下去吗?

最近遇到一个问题:Oracle JDK 8 在 ARM 机器上性能特别差! 我的第一直觉就是是不是 JDK 8 在 ARM 不兼容? 为了研究这个问题,我探究了一圈,主要是找找有没有同行遇到这个问题,在找的过程中呢,发…

基于vue框架的宠物领养系统l3a76(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,宠物信息,宠物领养,宠物品种,团队信息,入团申请,团队活动 开题报告内容 基于Vue框架的宠物领养系统开题报告 一、引言 随着宠物文化的普及和人们对宠物情感的日益加深,宠物领养已成为社会关注的热点之一。然而&#…

# 大模型的第一个杀手级应用场景出来了

大家终于都意识到大模型首先改变的是软件行业自己,而软件的根基是代码生成。代码生成第一波就是AI辅助开发,这个会是大模型第一个杀手级应用。大家苦苦逼问自己的大模型杀手级应用,为什么会是辅助编程,这里说下什么: 必…

利用shuji还原webpack打包源码

0 前言 前段时间做一个银行的项目,是在别人已经打过好多次的基础上继续打,而且时间很短,也是没办法要有产出,这个银行很多站点都是webpack打包,就新学了一个点:利用shuji获取webpack打包站源码&#xff08…

2025届京东校招薪酬全面上调,加薪20%!

就在近日京东官方发布声明,今年 2025 届校招岗位的薪资将全面上调,再次加薪!其中,采销、技术、产品等核心岗位薪酬上调不低于20%,产研类岗位更狠,算法岗平均起薪涨幅超75%,硬件和设计等岗位起薪…

2024年06月中国电子学会青少年软件编程(图形化)等级考试试卷(一级)答案 + 解析

青少年软件编程(图形化)等级考试试卷(一级) 分数:100 题数:37 一、单选题 音乐Video Game1的时长将近8秒,点击一次角色,下列哪个程序不能完整地播放音乐两次?&#xff0…

java实现根据延迟法定退休政策计算退休年龄

一、计算规则 从2025年1月1日起,男职工和原法定退休年龄为五十五周岁的女职工,法定退休年龄每四个月延迟一个月,分别逐步延迟至六十三周岁和五十八周岁;原法定退休年龄为五十周岁的女职工,法定退休年龄每二个月延迟一…

应急响应实战---是谁修改了我的密码?

前言:此次应急响应为真实案例,客户反馈无法通过密码登录服务器,疑似服务器被入侵 0x01 如何找回密码? 客户服务器为windows server2019,运维平台为PVE平台;实际上无论是windows系统或者是linux系统&#…

从简单分析到智能问数,Smartbi AIChat让数据回归业务

大数据产业创新服务媒体 ——聚焦数据 改变商业 在某科技公司,资深数据分析师李晨(化名)正忙于分析新产品的市场表现。面对传统自助式BI工具,李晨在功能界面中手动设置各种查询条件,进行了一番复杂的拖拉拽操作&#…

spring模块(六)spring监听器(3)广播与异步问题

发布事件和监听器之间默认是同步的;监听器则是广播形式。demo: event: package com.listener.demo.event;import com.listener.demo.dto.UserLogDTO; import org.springframework.context.ApplicationEvent;public class MyLogEvent extends…

界面控件DevExpress中文教程:如何PDF图形对象的可见性?

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 近期重要版本v24.1已正式发布,该版本拥有众多新产…

数据资产盘点

数据资产盘点包含调研诊断、数据盘点、数据对标校正、分类分级、权责划分、数据资产目录建立六大环节。调研诊断:通常采用访谈或案头梳理的方式,对 IT 整体建设情况、业务系统数据情况进行调研,框定数据资产管理范围、聚焦目标。 数据盘点&a…

spring整合mabatis框架(druid连接池)

spring整合mabatis框架&#xff0c;duird连接池&#xff0c;Junit5测试框架 1&#xff09;创建Maven工程 2&#xff09;导入相关的依赖 <!--springContext依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-contex…

helm一键化部署pod

目录 概念 安装helm helm的命令 自定义模版 回滚 概念 helm提供了一个模版&#xff0c;可以一键化的部署微服务。它通过打包的方式&#xff0c;把所有需要的yaml文件集合一起&#xff0c;然后一键部署&#xff0c;还可以支持回滚。 helm的本质&#xff1a;就是可以把k8s…

低压电抗器与电容器安装距离

低压电抗器与电容器的安装距离是一个关键问题&#xff0c;主要考虑电气安全、热效应以及电磁干扰等因素。通常建议保持适当的安装距离以确保设备的正常运行和安全性。 以下是一些常见的参考原则&#xff1a; 1、热效应 电抗器和电容器在运行过程中都会产生热量。如果两者之间距…

代数模型(Algebraic Models)---线性规划------ + 案例 + Python源码求解(见文中)

目录 一、代数模型&#xff08;Algebraic Models&#xff09;详解1.1什么是代数模型&#xff1f;1.2代数模型的基本形式1.3 安装所需要的Python包--运行下述案例1.4代数模型的应用案例案例 1&#xff1a;市场供需平衡模型Python求解代码Python求解结果如下图&#xff1a; 案例 …

GDPU MySQL数据库 天码行空1 数据库的创建和基本操作

一、实验目的 1&#xff0e;熟知机房用机安全规则。 2&#xff0e;通过上机操作&#xff0c;加深对数据库系统理论知识的理解&#xff1b;通过使用具体的DBMS&#xff0c;了解一种实际的数据库管理系统&#xff0c;并掌握其操作技术&#xff1b;通过对实际题目的上机实验&…

Java8的函数式编程简介

文章目录 环境背景方法方法1&#xff1a;Java 7&#xff08;传统方法&#xff09;方法2&#xff1a;Java 7 &#xff08;策略模式&#xff09;方法3&#xff1a;Java 8的Lambda表达式方法4&#xff1a;Java 8内建的函数式接口Predicate方法5&#xff1a;Java 8的方法引用方法6&…