0101日志-运维-mysql

news2024/11/17 13:54:52

1 错误日志

错误日志(Error Log):错误日志记录了MySQL引擎在运行过程中出现的错误和异常情况。这些错误可能包括启动和关闭问题、数据库崩溃、权限问题等。错误日志对于排查和解决MySQL引擎问题非常有帮助。

改日志默认开启,默认存放目录/var/log,默认日志文件名称`mysqld.log。查看日志文件位置:

show variables like '%log_error%';

mysql> show variables like ‘%log_error%’;

Variable_nameValue
binlog_error_actionABORT_SERVER
log_errorstderr
log_error_serviceslog_filter_internal; log_sink_internal
log_error_suppression_list
log_error_verbosity2
  • 该mysql为docker容器中安装运行,位置为标准的错误输出。

下面我们通过修改auto.cnf中UUID让mysql启动报错,来演示错误。

/var/lib/mysql/auto.cnf内容如下所示:

[auto]
server-uuid=1ceab188-df23-11ed-ab6f-0242ac110002

mysql服务器uuid唯一且位数固定,现在我们删去最后一位,再次启动mysql

在这里插入图片描述

报错信息显示auto.cnf中UUID非法无效,现在我们改回之前的server-uuid,问题来了,我们的mysql之前未挂载msyql目录,现在mysql容器启动不起来,不能进入容器,修改不了auto.cnf文件了怎么办呢?

在这里插入图片描述

首先要记住一点,你看不到不表示它没有。

第二步:把mysql文件夹下载到本地,右键save本地

在这里插入图片描述

第三步:修改mysql/auto.cnf为原server-uuid,右键import 在上传至原位置。

2 二进制日志

2.1 简介

二进制日志(BINLOG)记录所有的DDL(数据定义语言)语句和MDL(数据操纵语言)语句,但不包括(SELECT、SHOW)语句。

  • 作用:
    • 灾难时数据恢复;
    • Mysql的主从复制;

二进制日志查看

show variables like '%log_bin%';
Variable_nameValue
log_binON
log_bin_basename/var/lib/mysql/binlog
log_bin_index/var/lib/mysql/binlog.index
log_bin_trust_function_creatorsOFF
log_bin_use_v1_row_eventsOFF
sql_log_binON
  • Log_bin:二进制日志开关,mysql8.0默认开启;
  • log_bin_basename: 二进制日志文件存放路径和基础文件名binlog;
  • log_bin_index:二进制日志文件对应的索引记录

2.2 日志格式

Mysql服务器提供多种格式来记录二进制日志,具体格式及特点如下:

日志格式含义
STATEMENT基于SQL语句的日志记录,记录的是SQL语句,对数据修改的SQL都会记录在日志中。
ROW基于行的日志记录,记录的是每一行的数据变更。(默认)
MIXED混合STATEMNET和ROW记录,默认采用STATEMENT记录,在某些特殊的情况下自动切换ROW记录。

查看日志格式

show variables like '%binlog_format%';
binlog_format | ROW 

2.3 日志查看

由于日志以二进制存储,不能直接读取,需要通过二进制日志查询工具mysqlbinlog查看,具体语法

mysqlbinlog [参数选项] logfilename
参数选项:
	-d	指定数据库名称,只列出指定数据库相关操作。
	-o 	忽略掉日志文件中的前n行
	-v	将行事件(数据变更)重构为sql语句
	-w	将行事件(数据变更)重构为sql语句,并输出注释信息
  • 基于行的日志记录

对score表执行如下sql

update score set math = math+1;

查看日志文件binlog.000071,

mysqlbinlog -v binlog.000071

### UPDATE `gaogzhen`.`score`
### WHERE
###   @1=1
###   @2='Java'
###   @3=66
###   @4=88
###   @5=95
### SET
###   @1=1
###   @2='Java'
###   @3=67
###   @4=88
###   @5=95
### UPDATE `gaogzhen`.`score`
### WHERE
###   @1=2
###   @2='Rose'
###   @3=90
###   @4=66
###   @5=99
### SET
###   @1=2
###   @2='Rose'
###   @3=91
###   @4=66
###   @5=99
### UPDATE `gaogzhen`.`score`
### WHERE
###   @1=3
###   @2='Java'
###   @3=98
###   @4=77
###   @5=80
### SET
###   @1=3
###   @2='Java'
###   @3=99
###   @4=77
###   @5=80

  • where 记录是的更新前的数据;set记录更新后的数据。

  • @1表示第一列

  • 基于STATEMENT的日志格式

在my.cnf中设置

binlog_format=STATEMENT

重启mysql,生成新的日志文件,执行相同的sql操作,再次查看日志内容

update score set math=math+1

2.4 日志删除

对于比较繁忙的业务系统,每天生成的binlog数量巨大,如果长时间不清除,将会占用大量磁盘空间。可以通过以下几种方式清理:

指令含义
reset master删除全部binlog日志,删除之后,日志编号,将从binlog.000001开始
purge master logs to ‘binlog.*****’删除* 编号之前的日志
purge master logs before ‘yyyy-mm-dd hh24:mi:ss’删除指定时间之前的日志

也可以在mysql的配置文件中配置二进制日志的过期时间,设置之后,二进制日志过去会自动删除

show variables like '%binlog_expire_logs_seconds%';

binlog_expire_logs_seconds | 2592000 默认30天

3 查询日志

查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的SQL语句。默认情况下,查询日志是未开启的。如果需要开启查询日志,可以开启以下设置。

show variables like '%general%'
Variable_nameValue
general_logOFF
general_log_file/var/lib/mysql/a584ba590640.log

第一步my.cnf配置查询日志

general_log=ON
general_log_file=/var/lib/mysql/mysql_query.log

第二步执行sql操作,查看配置的查询日志

tail -f mysql_query.log

如下图所示:

在这里插入图片描述

在业务繁忙的系统中开启查询日志,查询日志会非常大,如果非不要不建议开启。

4 慢查询日志

慢查询日志记录了所有时间超过参数long_query_time设置值并且扫描记录数不小于min_examined_row_limit的所有的SQL语句的日志,默认未开启。long_query_time默认10s,最小为0,精度可以到微妙。

第一步配置my.cnf中慢查询

slow_query_log=1
slow_query_log_file=/var/lib/mysql/slow-log.log
long_query_time=2
  • slog_query_log:1开启慢查询日志
  • slow_query_log_file:设置慢查询日志文件
  • long_query_time:设置阈值时间

第三步:查看慢查询日志,操作数据库

tail -f slow_log.log

如下图所示:

在这里插入图片描述

默认情况下,不会记录管理语句,也不会记录不使用索引进行查询的语句。可以使用log_slo_admin_statementslog_queries_not_using_indexes

# 记录执行较慢的管理语句
log_slow_admin_statements=1
# 记录较慢的未使用索引的语句
log_queries_not_using_indexes=1

结语

如果小伙伴什么问题或者指教,欢迎交流。

❓QQ:806797785

参考链接:

[1]MySQL数据库视频[CP/OL].2020-04-16.p153-157.

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

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

相关文章

python在不同坐标系中绘制曲线

文章目录 平面直角坐标系空间直角坐标系极坐标地理坐标 平面直角坐标系 回顾我们的数据可视化的学习历程,其实始于笛卡尔坐标系的创建,并由此建立了数与形的对应关系。在笛卡尔坐标系中随便点上一点,这个点天生具备坐标,从而与数…

基于LSTM神经网络的电力负荷预测(Python代码实现)

目录 💥1 概述 📚2 运行结果 🌈3 Python代码及数据 🎉4 参考文献 💥1 概述 前馈神经网络的输出只依赖当前输入,但是在文本、视频、语音等时序数据中,时序数据长度并不固定,前馈神经…

我对排序算法的理解

排序算法一直是一个很困惑我的问题,早在刚开始接触 数据结构的时候,这个地方就很让我不解。就是那种,总是感觉少了些什么的感觉。一开始,重新来过,认真来学习这一部分,也总是学着学着就把概念记住了。过了一…

词典项目练习

思维导图 客户端 #include "head.h" //用户提示界面 void help_info1() {printf("\t-----------------------------------------------\n");printf("\t| HENRY 在线辞典 |\n");printf("\t|版本:0.0.1 …

官方实锤!AMD真的已经有了大小核:不搞Intel那一套

Intel 12代酷睿开始引入大小核混合架构,多核跑分提升立竿见影,在游戏、渲染等场景中也有很好的辅助作用,但因为大核心、小核心基于完全不同的架构,需要复杂的系统、软件调度配合,也直接导致失去了AVX-512指令集。 AMD也…

解决多线程环境下单例模式同时访问生成多个实例

如何满足单例:1.构造方法是private、static方法、if语句判断 ①、单线程 Single类 //Single类,定义一个GetInstance操作,允许客户访问它的唯一实例。GetInstance是一个静态方法,主要负责创建自己的唯一实例 public class LazySi…

浅析hooks,复杂前端业务解题之道

hooks 大势所趋 2019年年初,react 在 16.8.x 版本正式具备了 hooks 能力,同年6月;尤雨溪在 vue/github-issues 里提出了关于 vue3 Component API 的提案(vue hooks的基础)。在Vue3的组合式API出现后,githu…

VS2017配置Qt开发环境

VS2017配置Qt开发环境 安装Qt5.12.11安装Qt插件在VS2017中进行设置参考教程 安装Qt5.12.11 安装Qt插件 在VS2017中进行设置 参考教程 # Qt下载地址 https://download.qt.io/ # Qt安装 https://blog.csdn.net/jjxcsdn/article/details/125432165?spm1001.2014.3001.5506 # VS2…

【LeetCode】解码方法(动态规划)

解码方法 题目描述算法流程编程代码代码优化 链接: 解码方法 题目描述 算法流程 编程代码 class Solution { public:int numDecodings(string s) {int n s.size();vector<int> dp(n);dp[0] s[0] ! 0;if(n 1) return dp[0];if(s[1] < 9 && s[1] > 1) d…

Packet Tracer – 使用 TFTP 服务器升级思科 IOS 映像。

Packet Tracer – 使用 TFTP 服务器升级思科 IOS 映像。 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 F0/0 192.168.2.1 255.255.255.0 不适用 R2 G0/0 192.168.2.2 255.255.255.0 不适用 S1 VLAN 1 192.168.2.3 255.255.255.0 192.168.2.1 TFTP …

Neo4j文档阅读笔记-Installation and Launch Guide

安装&#xff08;Windows&#xff09; ①找到下载好的Neo4j Desktop文件&#xff0c;然后双击进行安装&#xff1b; ②安装Neo4j Desktop根据下一步进行安装。 启动 ①激活 打开Neo4j Desktop应用程序后&#xff0c;将激活码输入到“Activation Key”窗口中。 ②创建数据库…

牛客网Verilog刷题——VL44

牛客网Verilog刷题——VL44 题目题目解析答案 题目 如图所示为两种状态机中的一种&#xff0c;请根据状态转移图写出代码&#xff0c;状态转移线上的0/0等表示的意思是过程中data/flag的值。 要求&#xff1a; 1、 必须使用对应类型的状态机 2、 使用二段式描述方法 注意rs…

远程医疗技术的变革

目录 1.远程医疗的概念 2.远程医疗的发展历史 3.远程医疗的靠谱性 4.远程医疗的潜在危害 1.远程医疗的概念 远程医疗是一种通过通信技术&#xff0c;使医生和患者能够在不同地点进行医疗咨询和治疗的形式。它利用视频通话、电话、在线聊天和其他远程通信工具来实现远程诊断…

自定义一个仿拼多多地址选择器

前言 做了一个仿拼多多的地址选择器&#xff0c;但是与拼多多实现方法有些出入&#xff0c;大体效果是差不多的。废话不多说&#xff0c;先上一张效果动图&#xff1a; 开始 先说说本文的一些概念。地区级别&#xff1a;就是比如省级&#xff0c;市级&#xff0c;县级&#x…

理解复杂系统的关键:耐心

理解复杂系统的关键&#xff1a;耐心 复杂系统本质上是多面的、复杂的。它们通常并非被设计成一瞬间就能理解的。这对于自然发生的系统&#xff0c;如生态系统&#xff0c;和人类设计的系统&#xff0c;如高级软件或机械&#xff0c;都是适用的。这些系统是由多个组件混合而成…

【腾讯云Cloud Studio实战训练营】使用Cloud Studio迅捷开发一个3D家具个性化定制应用

目录 前言&#xff1a; 一、腾讯云 Cloud Studio介绍&#xff1a; 1、接近本地 IDE 的开发体验 2、多环境可选&#xff0c;或连接到云主机 3、随时分享预览效果 4、兼容 VSCode 插件 5、 AI代码助手 二、腾讯云Cloud Studio项目实践&#xff08;3D家具个性化定制应用&…

牛客网Verilog刷题——VL42

牛客网Verilog刷题——VL42 题目答案 题目 请设计一个可以实现任意小数分频的时钟分频器&#xff0c;比如说8.7分频的时钟信号&#xff0c;注意rst为低电平复位。提示&#xff1a;其实本质上是一个简单的数学问题&#xff0c;即如何使用最小公倍数得到时钟周期的分别频比。设小…

一夜卷走220万美元

* * * 原创&#xff1a;刘教链 * * * 号外&#xff1a;今天在「刘教链内参」发表了《内参&#xff1a;对传国内某DAO组织被刑事立案一事的分析》&#xff0c;欢迎关注公众号「刘教链内参」并阅读。 --- 隔夜比特币继续在29k上方盘旋。 表面的百无聊赖之下&#xff0c;各种土狗…

隐私保护之隐私信息检索

【引子】用户的隐私保护涉及多个方面&#xff0c;用户行为的隐私保护更是一个难点。周末读了一篇论文&#xff0c;https://cacm.acm.org/magazines/2010/4/81501-private-information-retrieval/fulltext&#xff0c;涉及了很多数学上的方法和概念&#xff0c;很是费劲&#xf…

Python--matplotlib基础绘图

前言 本章来说一下绘图&#xff0c;毕竟在软硬件行业&#xff0c;设备端的日志有了&#xff0c;前面也讲了抽取数据&#xff0c;怎么能不绘图呢。 在工作中&#xff0c;我也是经常会遇到研发有这样的需求&#xff0c;把数据整理出来&#xff0c;做成图&#xff0c;便于分析BUG。…