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.二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句
二进制日志的记录
二进制会自行选择记录执行语句或者执行后的数据结果
有以下情况
假设一个表有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这个指令
解决方式
添加 --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) { //若城市(i,j)之间有路且j不在蚂蚁k的禁忌表中…...

北大青鸟天府校区IT学习大揭秘
口罩已放开,一切都要重新出发。 开年才一个多月,已经有很多小伙伴想培训转行IT行业或者已经在咨询、报名培训IT技术。作为老牌培训机构,也有很多小伙伴相信我们,选择了我们。很感谢大家的信任,作为老牌培训机构&#…...
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主键自增长唯一键外键表的约束 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如说我们的居民…...

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

D. Linguistics(思维 + 贪心)
Problem - D - Codeforces Alina发现了一种奇怪的语言,它只有4个单词:a, B, AB, BA。事实也证明,在这种语言中没有空格:一个句子是通过将单词连接成一个字符串来写的。Alina发现了一个这样的句子,她很好奇:有没有可能它恰好由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旗舰版
仔细看这个图像。然后后退几米再看。你看到了什么?混合图像是指将一张图片的低频与另一张图片的高频相结合的图片。根据观看距离的不同,所得到的图像有两种解释。在上面的图片中,你可以看到阿尔伯特爱因斯坦,一旦你离开屏幕或缩小…...

开发手册——一、编程规约_5.集合处理
这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则: 只要重写 equals,就必须重写 hashCod…...
【elastic】elastic高可用集群部署
文章目录前言一、资源分享1、包含源码包、配置文件二、部署过程三、报错锦集四、es的部分相关命令前言 本博客内容仅为记录博主思路,仅供参考,一切以自己实践结果为准。 一、资源分享 1、包含源码包、配置文件 链接:https://pan.baidu.com…...

初识Liunx下的进程状态和环境变量以及进程优先级
文章目录前言1.进程状态1.阻塞与挂起2.Linux下的进程状态1.概念知识2.R状态2.休眠状态(S/D)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. 线程的概念 所谓线程,就是指在一个 ‘执行流…...

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

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 服务停机和环境修复
一,前言 上一篇,介绍了 Secret 镜像的使用; 三台服务每天大概 15 块钱的支出,用一个月也是不少钱; 闲时可以停掉,这样每天只有 4 块钱支出,剩下一大笔; ECS 服务停机后公网 IP 会…...

Vue2的生命周期(详解)
Vue的生命周期一、生命周期的概念二、钩子函数三、Vue2的生命周期3.1 初始化阶段3.2 挂载阶段3.3 更新阶段3.4 销毁阶段一、生命周期的概念 Vue实例的生命周期: 从创建到销毁的整个过程 二、钩子函数 Vue框架内置函数,随着组件的生命周期阶段,自动执行 作用:特定的时间点,执行特…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...