mysql运维内参 太难_《MySQL运维内参》节选

本文是《MySQL运维内参》的节选,重点讲解了REDO日志在数据库crash recovery中的作用,以及日志文件管理,包括LSN的概念、日志组的管理、日志文件格式等。此外,还提及了MTR(mini-transaction)在日志写入中的影响。
摘要由CSDN通过智能技术生成

《《MysqL运维内参》节选》要点:

本文介绍了《MysqL运维内参》节选,希望对您有用。如果有疑问,可以联系我们。

本文上接第二部分,本机讲述REDO日志.

REDO LOG日志文件管理的用途

REDO LOG是用来做数据库crash recovery的,这是数据库保障数据安全的重要功能之一.在数据库操作中,它保存了对InnoDB表中数据的修改记录,所以也叫日志文件.在InnoDB存储引擎中,一般默认包括2个日志文件,新建数据库之后,会有名为ib_logfile0和ib_logfile1的两个文件,如果在启动数据库时,这两个文件不存在,则InnoDB会根据配置参数或默认值,重新创建日志文件.

2017092618143833677.jpg

在InnoDB内部的日志管理中,一个很重要的概念是LSN,全名叫Log Sequence

Number,它用来精确记录日志位置信息,且是连续增长的.在InnoDB中,大小为8个字节的值,它的增长量是根据一个MTR(mini-transaction,后面会讲到)写入的日志量来计算的,写多少日志(单位字节),LSN就增长多少.日志文件轮循一圈(所有日志文件是以循环方式使用的),那么LSN的增长量大约就是整个日志文件的大小(日志文件存在文件头等会占用一部分空间).它是一个集逻辑意义与物理意义于一身的概念.而在有些数据库中,LSN是一个完全逻辑的概念,每提交一个物理事务,LSN就加1.

上面提到,日志文件是以类似循环圈的方式使用的,如下图所示.

2017092618143871461.jpg

在InnoDB中,通过日志组来管理日志文件,是一个逻辑定义,包含若干个日志文件,一个组中的日志文件大小相等,大小通过参数来设置.现在InnoDB只⽀持一个日志组.在MysqL 5.5及之前的版本中,整个日志组的容量不能大于4G(实际上是3.9G多,因为还有一些文件头信息等),到了MysqL5.6.3版本之后,整个日志组的容量可以设置得很大,最大可以达到512G.

REDO日志的写入,都是字节连续的,虽然看上去是多个日志文件,但理解的时候,完全可以把它想象成一个文件,对每一文件掐头去尾,把剩下的空间连接起来,就是总的日志空间了.

日志组中的每一个日志文件,都有自己的格式,内部也是按照大小相等的页面切割,但这里的页面大小是512个字节,由于历史的原因,考虑到机械硬盘的块大小是512字节,日志块大小也如此设计.这是因为写日志其实就是为了提高数据库写入吞吐量,如果每次写入是磁盘块大小的倍数,效率才是最高的,并且日志将逻辑事务对数据库的分散随机写入转化成了顺序的512字节整数倍数据的写入,这样就大大提高了数据库的效率.正是因为这个原因,REDO日志才可以说是数据库管理系统与通过直接写文件来管理数据的最根本的区别之一.

下面展示的是日志文件的格式.

注:图中第一列指的是每一项在页面中的偏移位置,而下一项则是这个值再加上该值在页面中所占长度的值

2017092618143805687.jpg

上面的4个页面(2048字节),就是图中展示的内容,主要用于管理日志内容及整个数据库状态.在这2K内容之后,就是正常的用来存储日志内容的部分,也是按照512字节页面大小的方式存储,下图中展示的是正常日志页面的格式.

2017092618143898642.jpg

普通页面中,都会有12个字节用来存储页面头信息,这些信息主要用于管理这个页面本身的数据存储方式.

LOG_BLOCK_HDR_NO:4个字节,一个与LSN有关系的块号.

LOG_BLOCK_HDR_DATA_LEN:2个字节,表示当前页面中存储的日志长度,这个值一般都等于512-12(12为页面头的大小),因为日志在相连的块中是连续存储的,中间不会存在空闲空间,所以如果这个长度不为500,表示此时日志已经扫描完成(Crash Recovery的工作).

LOG_BLOCK_FIRST_REC_GROUP:2个字节,表示在当前块中是不是有一个MTR(关于这个概念的意义,会在下一节中专门介绍)的开始位置.因为一个MTR所产生的日志量有可能是超过一个块大小的,那么如果一个MTR跨多个块时,这个值就表示了这个MTR的开始位置究竟是在哪一个块中.如果为0,则表示当前块的日志都属于同一个MTR;而如果其值大于0并且小于上面LOG_BLOCK_HDR_DATA_LEN所表示的值,则说明当前块中的日志是属于两个MTR的,后面MTR的开始位置就是LOG_BLOCK_FIRST_REC_GROUP所表示的位置.

LOG_BLOCK_CHECKPOINT_NO:4个字节,存储的是检查点的序号.具体什么是检查点,后面会详细介绍.

上面所讲述的就是日志文件的组织结构,只有前面2K是日志头,后面所有的都是一个个连续的、用来存储MTR产生的日志页面.

什么是MTR InnoDB物理事务?

本文已经够长了,且听下回分解吧.

文章来自微信公众号:DBAce

总结

以上是编程之家为你收集整理的《MySQL运维内参》节选全部内容,希望文章能够帮你解决《MySQL运维内参》节选所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL运维内参是一本介绍MySQL数据库运维的参考书籍,可以帮助数据库管理员(DBA)提供关于MySQL运维的实用知识和经验。 MySQL是一种广泛使用的关系型数据库管理系统,其运维工作对于保持数据库的稳定性和高性能至关重要。MySQL运维内参提供了一系列针对MySQL数据库的运维技巧和最佳实践,帮助DBA更好地管理MySQL服务器。 MySQL运维内参涵盖了各个方面的MySQL运维知识,包括数据库安装和配置、性能优化、备份和恢复、故障处理和监控等。对于初学者来说,它提供了从入门到进阶的学习路径;对于有经验的DBA来说,它提供了解决特定问题和优化数据库性能的实用方法。 MySQL运维内参中的知识点和技巧都是经过实践验证的,可以直接应用到实际的MySQL环境中。它从实际运维中总结出的经验,包括遇到的一些常见问题和解决方案,以及一些高级技术和工具的介绍。 通过阅读MySQL运维内参,DBA可以学习到如何提高数据库性能和可靠性,如何进行合理的容量规划和监控,以及如何处理各种故障情况。对于企业而言,MySQL运维内参可以帮助降低数据库管理的成本,提高数据库的运行效率和稳定性。 总之,MySQL运维内参是一本值得DBA阅读和参考的书籍,它可以帮助DBA更好地管理MySQL数据库,提高数据库的性能和可靠性。 ### 回答2: MySQL运维内参是一本关于MySQL数据库运维方面的参考书籍,提供了使用MySQL数据库的最佳实践和运维技巧。这本书的PDF版本提供了便于读者在线阅读和下载的方式。 MySQL是一种广泛应用的关系型数据库管理系统,许多企业和组织都在其业务中使用MySQL数据库。然而,由于MySQL的复杂性和特殊性,对于数据库管理员来说,掌握MySQL运维技术是至关重要的。MySQL运维内参提供了详细的指导和建议,帮助数据库管理员更好地管理和维护MySQL数据库。 这本书包含了许多主题,包括MySQL数据库的安装和配置、性能调优、备份和恢复、故障排除等。每个主题都以实际案例和问题解决方案为基础,结合了作者多年的实践经验和深入研究。读者可以根据自己的需要选择感兴趣的章节进行学习和实践。 MySQL运维内参PDF版本允许读者在线阅读和下载,使得读者可以随时随地获取所需的信息。这对于那些经常需要查阅MySQL运维方面的知识的数据库管理员来说非常方便。同时,PDF版本也提供了搜索和书签等功能,帮助读者更好地浏览和管理书籍内容。 总之,MySQL运维内参是一本对于MySQL数据库运维非常有价值的参考书籍,而PDF版本则提供了便捷的阅读方式,使得读者可以更好地学习和应用其中的知识。无论是初学者还是有经验的数据库管理员,都可以通过阅读这本书来提升MySQL数据库运维的能力。 ### 回答3: MySQL运维内参是一本关于MySQL数据库运维的指南手册,以PDF格式提供。MySQL是一种开源的关系型数据库管理系统,用于管理和存储大量的数据。MySQL运维内参提供了深入的MySQL运维知识和技巧,帮助数据库管理员更好地管理和维护MySQL数据库。 MySQL运维内参的内容包括MySQL的安装配置、数据库备份与恢复、性能优化、高可用性和集群部署等方面。这本指南详细介绍了如何正确地安装和配置MySQL数据库,包括选择适合的版本和安全设置。此外,它还提供了备份数据库和恢复数据的方法,以确保数据的安全性和完整性。 性能优化是MySQL运维工作中一个重要的方面。MySQL运维内参会介绍一些常见的性能问题和解决方法,如优化查询语句、索引的使用和调整缓存等。高可用性和集群部署也是数据库运维人员关注的重点。该指南会介绍如何搭建MySQL的主从复制和主主复制,以及如何使用集群技术来实现高可用性和负载均衡。 MySQL运维内参还提供了一些实用的脚本和工具,帮助数据库管理员更高效地进行日常工作。比如,自动备份数据库、监控数据库的运行状态和性能、查询执行计划等。这些工具和脚本可以节省管理员的时间和精力,提高工作效率。 总之,MySQL运维内参是一本非常实用的MySQL数据库管理指南,涵盖了数据库运维的各个方面。无论是初学者还是有经验的数据库管理员,都可以从中学习到宝贵的知识和经验,提高MySQL数据库的管理水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值