mysql 重要日志文件汇总
作者:程序之心 发布时间:2024-01-28 20:34:55
作者:丁仪
来源:https://chengxuzhixin.com/blog/post/mysql_zhong_yao_ri_zhi_wen_jian_zong_jie.html
日志是所有应用的重要数据,MySQL 也有错误日志、查询日志、慢查询日志、事务日志等。本文简单总结下各种日志,以备查阅。
二进制日志 binlog
二进制日志 binlog 用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。使用任何存储引擎的 mysql 数据库都会记录 binlog 日志。在 binlog 中记录的是逻辑日志,也就是 SQL 语句。SQL 语句执行后,binlog 追加到日志文件中。可以设置 binlog 文件大小,超过大小后,自动创建新的文件。
binlog 有三种格式,分别为 STATMENT、ROW 和 MIXED。
STATMENT:把会修改数据的 sql 语句记录到 binlog 中;是 MySQL 5.7.7 之前的默认格式;
ROW:不记录每条 sql 语句的上下文信息,仅记录哪条数据被修改了;是 MySQL 5.7.7之后的默认格式;
MIXED:基于 STATMENT 和 ROW 两种模式的混合复制,一般使用 STATEMENT 模式,对于无法复制的操作使用 ROW 模式;
在实际应用中,binlog 主要用于主从复制和数据恢复。主从复制是指在 master 机器开启 binlog,通过某种方式把 binlog 发送给 slave 机器,slave 机器根据 binlog 内容进行数据操作,从而保证主从数据一致性。另外,通过使用 mysqlbinlog 工具可以从 binlog 恢复数据。
在 MySQL 5.7 之后,内置默认引擎已经变更为 InnoDB 引擎。 InnoDB 引擎在处理事务时,可以设置日志写入磁盘的时机,默认情况下是每次 commit 时写入磁盘。也可以通过 sync_binlog 参数设置成系统自动判断或每 N 个事务写入一次。
查询日志
查询日志记录了所有数据库请求的信息。无论这些请求是否得到了正确的执行。开启之后对性能有比较大的影响,因此使用不多。
慢查询日志
慢查询日志用来记录执行时间超过某个阈值的语句。执行时间阈值可以通过 long_query_time 来设置,默认是 10 秒。慢查询日志需要手动开启,对性能有一些影响,一般不建议开启。慢查询日志支持将记录写入文件,也支持写入数据库表。
事务日志 redo log
事务的四大特性之一是持久性。因此事务成功后,数据库的修改永久保存,不能因为任何原因而回到原来的状态。redo log 是 InnoDB 引擎层实现的日志,并不是所有引擎都有,用来记录事务对数据页的修改,可以在崩溃时用于恢复数据。redo log 包括内存中的日志缓冲和磁盘上的日志文件。执行 SQL 语句后,先写入日志缓冲,后续再一次性把多条缓冲写入文件。
在 InnoDB 中,数据页也会刷盘,redo log 存在的意义主要就是降低对数据页刷盘的要求。数据页的变更,redo log 没有必要全部保存。如果数据页刷盘比 redo log 快,则 redo log 的记录对于数据恢复意义不大;如果数据页刷盘比 redo log 慢,则 redo log 中比数据页快的部分可以用来快速恢复数据。因此 redo log 日志文件大小是固定的,当写到结尾时,会回到开头循环写日志。
事务日志 undo log
事务的四大特性之一是原子性。对数据库的一系列操作,要么全部成功,要么全部失败,不允许部分成功部分失败。因此,需要记录数据的逻辑变化。原子性通过 undo log 来实现,比如事务中执行一条 insert 语句,undo log 就会记录一条 delete 语句;事务中执行一条 update 语句,undo log 就会记录一条相反的 update 语句。这样在事务失败时,就可以通过 undo log 来回滚到事务之前的状态。
来源:https://www.cnblogs.com/chengxuzhixin/p/14022950.html?utm_source=tuicool&utm_medium=referral
猜你喜欢
- linux默认是安装了python,默认是安装python2.6.6,可能安装的版本是不能符合我们需要的python要求的。我们需要重新安装
- 这篇文章主要介绍了Python中join()函数多种操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持
- 串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以
- 一、节点的定义dom节点树图中可见节点HTML文档中的每个成分都是一个节点:整个文档是一个文档节点每个HTML标签是一个元素节点包含在HTM
- 话说本来我的电脑有个2000的数据库,去年我在那个电脑上新装了一个2005的数据库。前不久我买了台新电脑,装了数据库2008 将在旧电脑上的
- 先给大家讲解一下什么是kalikali是一种Linux系统,kali是专门用来渗透的,他是由back track系统演化而来的,后面结合了l
- 目录1. 注册百度云账号2. 安 * aidu python api3.调用摄像头4.完整测试程序1. 注册百度云账号注册百度智能云,提交申请
- Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们
- 一、题意理解给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构的”。现给定两棵树,请你判断它们是否是
- 1.数据库约束约束是关系型数据库提供的一种校验数据合法性的机制. 1.1 约束类型约束类型说明示例null使用not null 指
- 最近经常有收到MySQL实例类似内存不足的报警信息,登陆到服务器上一看发现MySQL 吃掉了99%的内存,God !有时候没有及时处理,内核
- 环境系统 : win 10 显卡:gtx965m cpu :i7-6700HQ python 3.61 pytorch 0.3包引用impo
- MySQL加密和解密实例详解数据加密、解密在安全领域非常重要。对程序员而言,在数据库中以密文方式存储用户密码对入侵者剽窃用户隐私意义重大。有
- 前言相信大家初入某个项目,一般都要看代码。有时候,想把代码文件打印下来看,不过一般代码文件数量都在两位数或更多,逐一打开、打印,确实太耗费精
- 标题显而易见,要说两种情况:重新打开页面或者返回某个页面时滚动到上次离开时的位置,以及不滚动保持在顶部。滚动这也有两种情况:页面重新打开,与
- 本文实例讲述了python实现的AES双向对称加密解密与用法。分享给大家供大家参考,具体如下:高级加密标准(Advanced Encrypt
- 首先如果柱状图中有中文,比如X轴和Y轴标签需要写中文,解决中文无法识别和乱码的情况,加下面这行代码就可以解决了:plt.rcParams[&
- 例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://loca
- 如今,基本每个网站都会需要到Tab切换展示内容的滑动门效果应用,这种效果可以在更少的页面空间内,展示更多的网站内容,节约空间,方便用户集中操