毫无疑问,InnoDB存储引擎是一款伟大的数据库产品,虽然严格意义上来说其只是数据库的一款引擎。但其在数据库从业人员眼中,特别是MySQL数据库相关从业人员心中,犹如Linux操作系统在许多程序员心中那样神圣而不
第1章 概览1 1 InnoDB 存储引擎历史1 2 源码版本1 3 源码风格1 3 1 源码结构1 3 2 代码风格1 4 代码编译1 5 阅读源码次序1 6 思考题1 7 继续阅读第2章 基本数据结构与算法2 1 相关文件2 2 内存管理
为什么要写这本书过去这些年,我一直在和各种不同的数据库打交道,见证了 MySQL 从一个小型的关系型数据库发展成为各大互联网企业的核心数据库系统的过程。期间我参与了一些大大小小的项目开发工作,成功地帮助
《MySQL内核:InnoDB存储引擎卷1》由资深MySQL专家亲自执笔,在以往出版的两本InnoDB介绍性图书的基础之上,更深入地介绍InnoDB存储引擎的内核,例如latch、B+树索引、事务、锁等,从源代码的角度深度解析了Inno
了解一些在数据复制环境中经常会遇到的问题能确保更好地管理MySQL。当新问题发生时,对数据复制有充分的了解有助于更快地找出问题的根源。每个数据复制的安装都会有不同的数据加载和数据操作特点。对此,很有必要
前面提到过在SHOW SLAVE STATUS命令的输出中,Seconds_Behind_Master变量的命名并不能准确表达其含义。实际上,Seconds_Behind_Master是以秒为单位衡量从节点SQL线程与从节点I O线程之间的延迟,也可以表示当前
通过改变相关系统变量,MySQL可以让数据复制有不同的行为。警告在从节点上改变MySQL的配置可能会影响到生产系统的失效备份或备份战略。在现在和将来,在任何MySQL数据复制拓扑的服务器上改动配置都要极其小心。在
改善数据复制延迟的最简单方法就是改进那些有可能阻塞单线程SQL执行的SQL语句的性能。减少UPDATE和DELETE语句所用的执行时间可以极大地改善数据复制延迟。《Effective MySQL之SQL语句最优化》这本书中提供了大量
同样可以在MySQL错误日志中查看和监控2 5 1节中介绍的所有常见错误。例如,如果正在监控错误日志,那么在遇到1062错误时应该会看到如下错误日志:120602 5:56:44 [ERROR] Slave SQL: Could not execute
2 5 了解数据复制延迟数据复制延迟可能会在多种不同的情况下因不同的原因引发。很多时候可能不会很显而易见地找出问题的根源。但是,在下面的2 5 1节将介绍几个导致数据延迟的主要原因,并介绍如何使用其他系统
在使用--slave-skip-errors=1062这个配置变量设置从节点时,默认地跳过重复键(duplicate key)错误是不值得推荐的做法。在生产系统中,这会导致数据从主节点移到从节点。在下面这个示例中,你将看到跳过重复的数
在遇到模式差异时,我们可能会遇到1146数据复制错误。不管模式有多大差异,我们都可以参考下面这种简单的修复方法:slave> SHOW SLAVE STATUS G Slave_IO_State: Waiting for master to send eventSl
2 4 常见的数据复制错误在MySQL中,有多种可能发生在从节点服务器上的常见的数据复制错误。2 4 1 MySQL服务器ID例如,如果数据库管理员手动设置了一个从节点,那么下面这个1593错误就有可能会发生:slave> SH
数据不一致可能是由多种因素造成的。最常见的原因就是人为干预,其他常见的原因可以分类为:配置设置、bug、(软件的)特性或由mysqld本身造成。在会话内禁用二进制日志十分有用,但是也存在潜在的危险。在原来计划
根据业务需求和要求,可以通过多种途径来识别模式的不一致问题,并检测模式在何时会发生变化。MySQL有一些内置的状态变量,负责跟踪一条ALTER语句是否被运行。状态变量Com_alter_%可以作为计数器,可以被记录在M
检查数据是定位数据复制中数据不一致问题的最有效方法。有以下三种需要被识别并且被修复的数据不一致:从节点上有不正确的数据从节点缺少一行或多行从节点多了一行或多行在使用SBR时,从节点很容易就会和主节点脱
MySQL数据复制在近些年有了很大的改善,但是仍存在数据和模式一致性的问题。数据复制的主要顾虑就是缺乏由主节点到从节点的校验和。在MySQL中有两种可配置的内置的二进制日志记录方法。Statement-Based Replica
MySQL在从节点上使用了一组编了号的文件,这组文件被称为中继日志。当SQL线程把那些数据复制发生的变更应用到从节点时,中继日志将会负责保存这些变更。中继日志文件是按照编码顺序排列的,从000001开始,包含所
默认情况下,MySQL不会移除旧的不运行的二进制日志。然而,我们可以使用expire_logs_days这个系统变量自动移除二进制日志。expire_logs_days的默认值是0,这意味着二进制日志不会被移除。正像该系统变量建议的那
顾名思义,二进制日志是一种内部格式。使用mysqlbinlog客户端实用程序,我们可以查看记录在二进制日志中的语句,例如:注意mysqlbinlog实用程序是用来读取二进制日志的推荐工具。$ mysqlbinlog & 39;pwd& 39;