为了账号安全,请及时绑定邮箱和手机立即绑定

离学会Mysql管理你欠缺的有几个日志了解

标签:
MySQL

各位同学,快到五一了,今天Jeson回顾了下Mysql,作为Mysql管理人员,对Mysql的日志了解是极为重要的,甚至会超过数据本身管理。


好了,首先,我列举下,如下这些Mysql我们应该掌握的日志类型,分类整理这些日志的功能上带来的重要性。如下列表:


https://img1.sycdn.imooc.com//5ae42d3d00019bdf06800330.jpg


接下来,Jeson继续详细介绍下这些日志对应的功能和重要性:

1、undo日志(log)

undo日志用于存放数据修改被修改前的值,假设修改 tba 表中 id=2的行数据,把Name='B' 修改为Name = 'B2' ,那么undo日志就会用来存放Name='B'的记录,如果这个修改出现异常,可以使用undo日志来实现回滚操作,保证事务的一致性。


2、redo日志(log)

当数据库对数据做修改的时候,需要把数据页从磁盘读到buffer pool中,然后在buffer pool中进行修改,那么这个时候buffer pool中的数据页就与磁盘上的数据页内容不一致,称buffer pool的数据页为dirty page 脏数据,如果这个时候发生非正常的DB服务重启,那么这些数据还没在内存,并没有同步到磁盘文件中(注意,同步到磁盘文件是个随机IO),也就是会发生数据丢失,如果这个时候,能够在有一个文件,当buffer pool 中的data page变更结束后,把相应修改记录记录到这个文件(注意,记录日志是顺序IO),那么当DB服务发生crash的情况,恢复DB的时候,也可以根据这个文件的记录内容,重新应用到磁盘文件,数据保持一致。


补充、 Undo + Redo事务的简化过程:

  假设有A、B两个数据,值分别为1,2,开始一个事务,事务的操作内容为:把1修改为3,2修改为4,那么实际的记录如下(简化):

  A.事务开始.
  B.记录A=1到undo log.
  C.修改A=3.
  D.记录A=3到redo log.
  E.记录B=2到undo log.
  F.修改B=4.
  G.记录B=4到redo log.
  H.将redo log写入磁盘。

  I.事务提交


3、核心日志类型binlog 日志(log):

作用类似于Oracle的归档日志,可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、Mysql的复制(主主数据库的复制、主从数据库的复制)。


4、主从同步所需要用到的日志binlog、relaylog

relay日志(log):

从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致。


5、语句分析日志

Slow 日志(log):

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

Query 日志(log):

所有连接到mysql的sql语句,都将记录到该日志文件或表,缺省未开启该日志。


怎么样?同学们不要简单的去看这些介绍:

想一想Mysql为什么会相比其它数据库数据保障性更为可靠?

Mysql的主从模式为什么需要用到Binglog、Relaylo来作?

undo、redo 日志是如何来保障数据库数据强一致性的?


最后五一快到了,Jeson祝大家节日愉快,开心玩耍。来,给这篇文章点个赞吧 



点击查看更多内容
8人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Python工程师
手记
粉丝
2万
获赞与收藏
3370

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消