当前位置: 首页 > news >正文

MySQL日志管理

日志管理

在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这种时候,我们必须

保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据了

数据库中数据丢失或被破坏可能原因:

  • 误删除数据库

  • 数据库工作时,意外断电或程序意外终止

  • 由于病毒造成的数据库损坏或丢失

  • 文件系统损坏后,系统进行自检操作

  • 升级数据库时,命令语句不严格

  • 设备故障

  • ......

MySQL日志类型

日志类型

记入文件中的信息类型

错误日志

记录启动,运行或停止时出现的问题

查询日志

记录建立的客户端连接和执行的语句

二进制日志

记录所有更改数据的语句,主要用于复制和即时点恢复

慢日志

记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询

事务日志

记录InnoDB等支持事务的存储引擎执行事务时产生的日志

默认情况下,所有日志创建于mysqld数据目录中。通过刷新日志,你可以强制 mysqld来关

闭和重新打开日志文件

刷新日志

在mysql中:执行语句 flush logs 刷新日志

在shell中:通过mysqladmin命令执行日志刷新

mysqladmin flush-logs
mysqladmin refresh

错误日志

错误日志记录内容

  • 服务器启动和关闭过程中的信息

  • 服务器运行过程中的错误信息

  • 事件调度器运行一个时间产生的信息

  • 在从服务器上启动从服务器进程是产生的信息

指定错误日志保存的位置

可以⽤--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置

如果file_name也就是文件名没有指定,name默认名字将会是host_name.err

如果你执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建⼀个新的空日志文件

查看当前错误日志配置

show global variables like "log_error%";

是否记录警告日志

show global variables like "log_warnings";

查询日志

通用查询日志

启动开关:general_log={ON|OFF}

日志文件变量:general_log_file[=/PATH/TO/file]

全局日志开关:log={ON|OFF} 该开关打开后所有日志都会被开启

记录类型:log_output={TABLE|FILE|NONE}

可见要开启通用查询日志,至少需要配置

general_log=ON,
log_output={TABLE|FILE}
general_log_file

查看默认配置

SHOW GLOBAL VARIABLES LIKE '%general_log%';
SHOW GLOBAL VARIABLES LIKE '%log_output%';

慢查询日志

MySQL如果启⽤了 slow_query_log=ON 选项,就会记录执⾏时间超过long_query_time的查询

日志文件为:slow_query_log_file[=file_name]

如果没有给出file_name值, 默认为主机名,后缀为-slow.log

如果给出了文件名,但不是绝对路径名,文件则写入数据目录

开启慢查询的方法

(只在当前有效)

set global slow_query_log =ON;

查看配置文件

SHOW GLOBAL VARIABLES LIKE '%slow_query_log%';
# 使用 mysqldumpslow 命令获得日志中显示的查询摘要来处理慢查询日志
# mysqldumpslow slow.log
# 那么多久算是慢呢?
# 如果查询时长超过long_query_time的定义值(默认10秒),即为慢查询:
mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';

二进制日志文件

开关

二进制日志启动开关:log-bin [=file_name]

作用

1.⼆进制日志包含了所有更新了数据或者已经潜在更新了数据的所有语句

2.语句以“事件”的形式保存,它描述数据更改。二进制日志还包含关于每个更新数据库的语

句的执行时间信息。它不包含没有修改任何数据的语句行

3.二进制日志的主要⽬的是在数据库存在故障时,恢复时能够最⼤可能地更新数据库(即时点

恢复),因为二进制日志包含备份后进行的所有更新。

4.二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句

二进制日志的记录

二进制会自行选择记录执行语句或者执行后的数据结果

有以下情况

  1. 假设一个表有10万行数据,现在要执行一个语句,将表中的某个字段的值全部替换

这个时候因为记录执行后的结果数据的话日志会非常大,会选择记录执行语句

2.如果向某个字段插入当前时间,这种不同时间执行结果时不一样的,那就得记录执行后的数据结果

3.实际上也可以结合两种方式来记录,这种情况叫做混合方式的二进制日志

二进制日志的管理

日志滚动

在my.cnf中设定max_binlog_size = 200M,表示限制二进制日志最大尺存为200M,超过200M后进行滚动。

MySQL的滚动方式与其他日志不太⼀样,滚动时会创建⼀个新的编号大1的日志用于记录最新的日志,而原日志名字不会被改变。每次重启MySQL服务,日志都会自动滚动⼀次。

另外如果需要手动滚动,则使⽤命令 mysql> FLUSH LOGS ;

日志查看

查看有那些二进制文件

show binary logs;

查看当前正在使用的二进制日志文件

show master status;

查看二进制内容

show binlog events in 'mysqld-binlog.000002';
mysqlbinlog [option] log-files

二进制日志还原数据

使用mysqlbinlog读取需要的日志内容,使用标准输入重定向到一个sql文件,然后在mysql

服务器上导入即可

举个例子

mysqlbinlog mysqld-binlog.000002 >/root/temp_date.sql

二进制日志还原出错

如果在导入的时候出现了

错误——mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4'

原因——mysqlbinlog这个工具无法识别binlog中的配置中的default-character-set=utf8mb4这个指令

解决方式

  1. 添加 --no-defaults 参数

mysqlbinlog --no-defaults binlog.000069 > c:/a.sql
/*注意需要指定binlog的位置,如果是当前路径,则可以直接使⽤名称即可*/

2.修改配置文件 my.cnf

default-character-set=utf8mb4 修改为 character-set-server = utf8mb4,但是需要重

启MySQL服务

删除二进制日志文件

二进制日志文件不能直接删除,如果使用rm等命令直接删除日志文件,可能导致数据库崩溃

必须使用命令 PURGE 删除日志文件

PURGE { BINARY | MASTER } LOGS { TO 'log_name' |BEFORE datetime_expr}

注意:如果数据库使用的编码是utf8mb4编码,mysqlbinlog命令可能不能解析这种编码

两种解决方法

1. 在 MySQL 的 配 置 /etc/my.cnf 中 将 default-character-set=utf8mb4 修 改 为

character-set-server = utf8 ,但是这需要重启MySQL服务,如果你的MySQL服务正

在忙,那这样的代价会比较大。

2. 用mysqlbinlog --no-defaults mysql-bin.000004 命令打开

相关文章:

MySQL日志管理

日志管理在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这种时候,我们必须保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据了数据库中数据丢失或被破坏可能原因:误删除数据库数据库工作时&a…...

进 制

进制进制一、进制概念二、进制的转换三、二进制的运算3.1 与运算3.2 或运算3.3 非运算3.4 异或运算3.5 位运算(位移)四、原码、反码、补码4.1 原码4.2 反码4.3 补码五、浮点数十进制转换成二进制进制 一、进制概念 十进制是指逢十进一。 计算机中二进制…...

pycharm关联github、新建以及更新仓

此处已经默认你安装了git以及pycharm,这篇文章将会教给大家如何利用pycharm管理自己的github. 目录 pycharm关联github设置 Github创建新的仓 仓库的更新 pycharm:2022。不同版本界面略有不同。 pycharm关联github设置 设置PyCharm,打开File --> Settings -…...

java基础知识之小碎片(自问自答版本)---嘻嘻,春招加油呀~

1.public/private/protected/default的区别? public:对所有类可见 private 只有类本身可以访问,其他类想访问可以通过该类的成员方法访问如getter/setter protected:对同一包内的类和所有子类可见 default:在同一包内可见,不加修饰符 2.jav…...

蚁群算法c++

//轮盘赌选择下一步行进城市 int citySelect(int k, int f) { int c 0;//记录蚂蚁可行进的城市个数 //1、计算可行进的各城市 选择概率 for (int m 0; m < cityNum; m) { //若城市&#xff08;i,j&#xff09;之间有路且j不在蚂蚁k的禁忌表中&#xf…...

北大青鸟天府校区IT学习大揭秘

口罩已放开&#xff0c;一切都要重新出发。 开年才一个多月&#xff0c;已经有很多小伙伴想培训转行IT行业或者已经在咨询、报名培训IT技术。作为老牌培训机构&#xff0c;也有很多小伙伴相信我们&#xff0c;选择了我们。很感谢大家的信任&#xff0c;作为老牌培训机构&#…...

04 Linux errno.h错误码中文注释

Linux错误码中文注释 作者将狼才鲸创建日期2023-03-04/******************************************************************************* \brief 错误码* \note 基于linux_6.1-rc4\include\uapi\asm-generic\errno-base.h* linux_6.1-rc4\tools\arch\alpha\include\uapi…...

MySQL表的约束

文章目录表的约束空属性默认值列描述zerofill主键自增长唯一键外键表的约束 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&#xff0c;从业务逻辑角度保证数据的正确性。比如说我们的居民…...

Go语言的条件控制语句及循环语句的学习笔记

一、Go的条件控制语句 Go 语言提供了以下几种条件判断语句&#xff1a; 语句描述if 语句if 语句 由一个布尔表达式后紧跟一个或多个语句组成。if…else 语句if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。if 嵌套语句你可以在 if 或…...

D. Linguistics(思维 + 贪心)

Problem - D - Codeforces Alina发现了一种奇怪的语言&#xff0c;它只有4个单词:a, B, AB, BA。事实也证明&#xff0c;在这种语言中没有空格:一个句子是通过将单词连接成一个字符串来写的。Alina发现了一个这样的句子&#xff0c;她很好奇:有没有可能它恰好由a个单词a, b个单…...

maxWell数据迁移

目录 1.开启mysql的binlog 1.1: Statement-based 1.2: Row-based 1.3: mixed 2. 重启mysql服务 3. 创建Maxwell所需数据库和用户 4. 配置Maxwell 5. Maxwell启停(实时同步) 6. 历史数据全量同步 这里使用maxWell对mysql数据迁移到kafka中 官网下载地址点击下载 注&#x…...

混合图像python旗舰版

仔细看这个图像。然后后退几米再看。你看到了什么&#xff1f;混合图像是指将一张图片的低频与另一张图片的高频相结合的图片。根据观看距离的不同&#xff0c;所得到的图像有两种解释。在上面的图片中&#xff0c;你可以看到阿尔伯特爱因斯坦&#xff0c;一旦你离开屏幕或缩小…...

开发手册——一、编程规约_5.集合处理

这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】关于 hashCode 和 equals 的处理&#xff0c;遵循如下规则&#xff1a; 只要重写 equals&#xff0c;就必须重写 hashCod…...

【elastic】elastic高可用集群部署

文章目录前言一、资源分享1、包含源码包、配置文件二、部署过程三、报错锦集四、es的部分相关命令前言 本博客内容仅为记录博主思路&#xff0c;仅供参考&#xff0c;一切以自己实践结果为准。 一、资源分享 1、包含源码包、配置文件 链接&#xff1a;https://pan.baidu.com…...

初识Liunx下的进程状态和环境变量以及进程优先级

文章目录前言1.进程状态1.阻塞与挂起2.Linux下的进程状态1.概念知识2.R状态2.休眠状态(S/D&#xff09;3.T状态4.Z状态(僵尸进程)和X状态5.孤儿进程3.环境变量1.概念2.获取环境变量1.环境变量表2.函数获取环境变量3.关于环境变量的理解和main函数中的两个参数1.环境变量的理解2…...

JavaEE——何为线程及创建线程

文章目录一、认识线程1. 线程的概念2. 出现多线程的原因3. 进程与线程4. 对多线程的详细解释二、初次实现多线程代码1. 初步了解2. 使用 Java 中的工具查看当前的所有线程3. Java 中创建线程的多种方式一、认识线程 1. 线程的概念 所谓线程&#xff0c;就是指在一个 ‘执行流…...

linux配置核查MySQL 配置规范 (Linux)_S3A3G3

linux的配置核查问题&#xff1a; 解决&#xff1a; 1.检查是否禁止mysql对本地文件存取 方法一&#xff1a;在my.cnf的mysql字段下加local-infile0 方法二&#xff1a;启动mysql时加参数local-infile0 /etc/init.d/mysql start --local-infile0 假如需要获取本地文件&#xf…...

Protobuf简介

Protobuf简介 1. Protocol Buffers1.1. 什么是Protocol Buffers?1.2. 选择你最喜欢的语言1.3. 如何开始2. Protocol Buffer Basics: C++2.1. 问题领域2.2. 在哪里找到示例代码2.3. 定义协议格式(Defining Your Protocol Format)1. Protocol Buffers Protocol Buffers(协议缓冲…...

【Kubernetes】第十七篇 - ECS 服务停机和环境修复

一&#xff0c;前言 上一篇&#xff0c;介绍了 Secret 镜像的使用&#xff1b; 三台服务每天大概 15 块钱的支出&#xff0c;用一个月也是不少钱&#xff1b; 闲时可以停掉&#xff0c;这样每天只有 4 块钱支出&#xff0c;剩下一大笔&#xff1b; ECS 服务停机后公网 IP 会…...

Vue2的生命周期(详解)

Vue的生命周期一、生命周期的概念二、钩子函数三、Vue2的生命周期3.1 初始化阶段3.2 挂载阶段3.3 更新阶段3.4 销毁阶段一、生命周期的概念 Vue实例的生命周期: 从创建到销毁的整个过程 二、钩子函数 Vue框架内置函数,随着组件的生命周期阶段,自动执行 作用:特定的时间点,执行特…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...