奇迹小说
深入理解MySQL主从原理

深入理解MySQL主从原理

作者: 高鹏

11.52万17人 正在读

已完结现代当代当代文学
作品简介

在超大规模流量的分布式系统环境下,无论是从系统性能的角度,还是从数据安全性的角度,掌握MySQL主从原理,都是当下技术人员的必备基本功。MySQL主从原理是高可用架构的基石,即便是MGR这种集群架构也可以看到主从的影子。要解决一个问题或者故障,最快的方式就是了解它的原理,快速定位问题。《深入理解MySQL主从原理》从源码层面抽丝剥茧般地描述MySQL主从原理,全面地介绍了GTID相关的知识点,并解析了主要Event的生成、作用和格式,以及线程的初步知识、MDL LOCK、排序等热门话题和主从相关的案例。 无论是MySQL DBA和MySQL源码爱好者,还是刚进入数据库行业的小白读者,通过阅读本书,都能通过源码级分析,更好地理解和使用MySQL主从复制技术。

目录 (192章)
倒序
正文
第1章 GTID1.1.1 GTID的作用1.1.2 GTID的基本表示1.1.3 server_uuid的生成1.1.4 GTID的生成1.1.5 GTID_EVENT和PREVIOUS_GTIDS_LOG_EVENT简介1.1.6 gtid_executed表的作用1.2 mysql.gtid_executed表、gtid_executed变量、gtid_purged变量的修改时机1.2.1 定义1.2.2 主库修改时机1.2.3 从库修改时机1.2.4 通用修改时机1.2.5 通用修改时机源码函数简析1.3 GTID模块初始化简介和参数binlog_gtid_simple_recovery1.3.1 GTID模块初始化流程图1.3.2 步骤解析1.4 GTID中的运维1.4.1 跳过一个事务1.4.2 mysqldump导出行为的改变1.4.3 搭建GTIDAUTO_POSITIONMODE的主从1.4.4 主从切换1.4.5 参数gitd_mode的含义1.4.6 在线开启GTID1.4.7 离线开启GTID1.4.8 开启GTID的注意事项1.4.9 统计值ONGOING_ANONYMOUS_TRANSACTION_COUNT的变更时机1.4.10 设置MASTER_AUTO_POSITION=1的影响1.4.11 离线开启GTID丢失数据的测试第2章 Event2.1.1 引言2.1.2 binarylog综述2.1.3 Event的总体格式2.1.4 Eventheader和Eventfooter2.1.5 具体解析2.1.6 本书涉及的Event类型2.2.1 FORMAT_DESCRIPTION_EVENT2.2.2 PREVIOUS_GTIDS_LOG_EVENT2.3 重点Event之GTID_EVENT2.3.1 GTID_EVENT的作用2.3.2 源码重要接口2.3.3 主体格式2.3.4 简单解析2.3.5 生成时机2.3.6 ANONYMOUS_GTID_EVENT2.3.7 GTID的三种模式2.4.1 QUERY_EVENT2.4.2 MAP_EVENT2.5.1 WRITE_EVENT2.5.2 DELETE_EVENT2.6.1 UPDATE_EVENT2.6.2 XID_EVENT2.7 参数binlog_row_image的影响2.7.1 参数影响2.7.2 过滤方式2.7.3 DMLEvent中的标识2.8.1 工具简介2.8.2 分析长期未提交的事务2.8.3 分析大事务2.8.4 分析binarylog中Event的生成速度2.8.5 分析每个表生成了多少个DMLEvent2.8.6 工具展示第3章 主库3.1 binlogcache简介3.1.1 binlogcache综述3.1.2 使用binlogcache的流程3.1.3 参数binlog_cache_size的作用及其初始化3.1.4 临时文件的分配和使用3.1.5 参数max_binlog_cache_size的作用3.1.6 如何观察到临时文件3.2 事务Event的生成和写入流程3.2.1 流程综述3.2.2 删除阶段流程3.2.3 提交阶段流程3.2.4 两个注意点3.3 MySQL层事务提交流程简析3.3.1 参数设置3.3.2 总体流程图3.3.3 步骤解析第一阶段3.3.4 步骤解析第二阶段(FLUSH阶段)3.3.5 步骤解析第三阶段(SYNC阶段)3.3.6 步骤解析第四阶段(COMMIT阶段)3.3.7 步骤解析第五阶段3.3.8 提交阶段的注意点3.4 基于WRITESET的并行复制方式3.4.1 奇怪的lastcommit3.4.2 WRITESET是什么3.4.3 WRITESET的生成3.4.4 add_pke函数的流程3.4.5 WRITESET设置对lastcommit的处理方式3.4.6 WRITESET的历史MAP3.4.7 WRITESET的并行复制对lastcommit的处理流程3.4.8 WRITESET_SESSION的方式3.4.9 关于参数binlog_transaction_dependency_history_size的说明3.4.10 没有主键的情况3.4.11 为什么同一个session执行的事务能生成同样的lastcommit3.4.12 WRITESET并行复制方式的优缺点3.5 主库的DUMP线程3.5.1 POSITIONMODE和GTIDAUTO_POSITIONMODE的不同点3.5.2 流程图3.5.3 步骤解析3.5.4 重点说明3.6 DUMP线程查找和过滤GTID的基本算法3.6.1 环境假设3.6.2 检查从库的GTID是否大于主库的GTID3.6.3 检查需要的binarylog是否已经清理3.6.4 实际扫描binarylog3.6.5 GTID过滤第4章 从库4.1.1 MTS综述4.1.2 协调线程的分发机制4.1.3 步骤解析4.1.4 并行回放判定一例4.2 从库MTS多线程并行回放(二)4.2.1 工作线程执行Event4.2.2 MTS检查点中的重要概念4.2.3 MTS中执行检查点的流程4.2.4 MTS的关键点4.3 MTS中的“gap”测试和参数lave_preserve_commit_order4.3.1 MTS中的“gap”测试4.3.2 参数slave_preserve_commit_order的影响4.4.1 引入4.4.2 I/O线程的启动流程图4.4.3 流程解析4.5.1 SQL线程的功能4.5.2 流程图4.5.3 重要步骤说明4.5.4 各个Event做了什么4.6 从库数据的查找和参数slave_rows_search_algorithms4.6.1 从一个例子出发4.6.2 确认查找数据的方式4.6.3 ROW_LOOKUP_HASH_SCAN方式的数据查找4.6.4 从库数据查找的要点4.7.1 正常的stopslave流程4.7.2 stopslave为什么会慢4.7.3 从库启动需要读取的信息4.7.4 关于repository表的事务性4.7.5 相关参数4.7.6 恢复流程4.8 安全高效的从库设置4.8.1 从库参数设置建议4.8.2 单SQL线程模式4.8.3 MTS4.8.4 一个非安全设置的例子4.8.5 参数sync_relay_log的影响4.9 从库Seconds_Behind_Master的计算方式4.9.1 Seconds_Behind_Master的计算方式4.9.2 影响Seconds_Behind_Master的因素4.9.3 不同操作计算延迟的方式4.9.4 MTS中Seconds_Behind_Master计算误差测试4.9.5 手动修改系统时间导致Seconds_Behind_Master为04.10 Seconds_Behind_Master延迟场景归纳4.10.1 延迟场景4.10.2 相关测试4.10.3 延迟诊断的方法论第5章 案例解析5.1 线程简介和MySQL调试环境搭建5.1.1 线程简介5.1.2 PID、LWPID、ThreadTID5.1.3 MySQL线程和系统LWPID的关系5.1.4 调试环境的搭建5.1.5 调试环境的使用5.2.2 从一个问题出发5.2.3 测试案例5.2.5 阶段2:计算sort字段长度5.2.6 阶段3:计算额外字段的空间5.2.7 阶段4:确认每行的长度5.2.8 阶段5:确认最大内存分配5.2.14 回到问题本身5.2.15 答疑5.3.1 MDLLock综述5.3.2 重要数据结构和概念5.3.3 为MDLLock增加打印函数5.3.4 在合适的位置增加打印函数5.3.5 常见MDLLock类型的加锁测试5.4 奇怪的FTWRL堵塞案例5.4.1 两个不同的现象5.4.2 sleep函数生效点5.4.3 FTWRL做了什么工作5.4.4 例5-3步骤解析5.4.5 例5-4步骤解析5.4.6 FTWRL堵塞和被堵塞的简单总结5.5.1 案例现象5.5.2 参数slave_net_timeout分析5.5.3 原因剖析5.5.4 案例模拟5.5.5 实现方式5.6 从库systemlock状态原因简析5.6.1 binarylog的写入时间和Event中的时间5.6.2 问题由来5.6.3 从库systemlock延迟的原因5.6.4 systemlock问题分析5.6.5 模拟测试
精选推荐
销售心理学

销售心理学

[中国纺织出版社]

兰华

已完结当代文学

销售就是玩转情商

销售就是玩转情商

[中国纺织出版社]

王威

已完结当代文学

销售员情商实战训练

销售员情商实战训练

成功的销售需要高智商,更需要高情商。一个销售员的销售业绩,往往与他的情商成正比。本书从十个方面详细讲述了有效运用情商,提高销售业绩的方法和技巧。通过实际销售案例和销售心理学理论指导,以及实战点拨和情商拓展训练,帮助读者全方位、快速提高情商。故事性、多版块、碎片化的内容设置,有效降低读者阅读疲劳,提高阅读兴趣,不论是奔波在路上的销售小白,还是带领团队奋勇向前的销售经理,都能从中找到适合自己的销售软技巧。

刘军

已完结当代文学

让未来的你,感谢现在勇敢的自己

让未来的你,感谢现在勇敢的自己

[中国纺织出版社]

王介威

已完结当代文学

行为心理学:华生的实用心理学课

行为心理学:华生的实用心理学课

[中国纺织出版社]

(美)约翰·华生著.倪彩

已完结当代文学

行为心理学入门(完全图解版)

行为心理学入门(完全图解版)

行为心理学入门(完全图解版)是以作者多来年的心理辅导和咨询数据为素材,对现实生活中的行为心理学应用进行了形象、深入、全面的论述和解读。本书与日本心理学图解书形式相同,浅显易读,有趣又益。

武莉

已完结当代文学

自制力:道理我都懂,为什么就是过不好人生

自制力:道理我都懂,为什么就是过不好人生

[中国纺织出版社]

邱开杰

已完结当代文学

能力与格局

能力与格局

[中国纺织出版社]

龙泽

已完结当代文学

羊皮卷

羊皮卷

[中国纺织出版社]

赵文武

已完结当代文学