猜你喜欢
数据生态:MySQL复制技术与生产实践

数据生态:MySQL复制技术与生产实践

书籍作者:罗小波 ISBN:9787121397141
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:7507
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

《数据生态:MySQL复制技术与生产实践》共分为3篇:基础篇、方案篇和参考篇。按照“基本原理”→“生产实践”→“更多参考”的逻辑顺序讲述,书中配了大量的原理与方案示意图,力求用通俗易懂的语言、直观明了的示意图、完整的知识涵盖面将MySQL复制技术讲透。

其中,基础篇侧重介绍主从复制的原理和复制技术的演进,方案篇侧重介绍主从复制技术在生产环境中的应用方案,参考篇侧重介绍二进制日志的基本组成及主从复制中常见对象复制的安全性等。

本书适用初、中、高级MySQL DBA、数据库架构师及相关开发人员阅读。


作者简介

罗小波

《千金良方:MySQL性能优化金字塔法则》作者之一。熟悉MySQL体系结构,擅长数据库的整体调优,热衷于开源技术的研究与分享,曾在线上和线下多次公开分享过数据库专题知识,发表近100篇数据库相关的研究文章,现任ScaleFlux资深应用工程师(StaffApplicationEngineer)。

沈刚

熟悉MySQL数据库运行机制,在数据库及复制架构故障的诊断、数据库性能调优、数据库备份恢复和迁移等方面有丰富的经验,为银行、证券公司及互联网用户提供数据库的架构设计、故障诊断、性能调优等服务,现任PingCAPTiDB技术支持工程师。

目录

基 础 篇

第1章 复制的概述 2

1.1 适用场景 2

1.2 数据同步方法 3

1.3 数据同步类型 4

1.4 复制格式 4

第2章 复制的基本原理 6

2.1 概述 6

2.2 细节 7

第3章 复制格式详解 10

3.1 复制格式概述 10

3.2 复制格式明细 11

3.2.1 基于statement和基于row的复制的优缺点 11

3.2.2 使用row格式的二进制日志进行复制 14

3.3 如何确定与记录复制中的安全和不安全语句 15

第4章 传统复制与GTID复制 18

4.1 传统复制 18

4.2 GTID复制 19

4.2.1 GTID的格式和存储 19

4.2.2 GTID的生命周期 23

4.2.3 GTID 自动定位 26

4.2.4 GTID复制模式的限制 27

第5章 半同步复制 29

5.1 半同步复制的原理 29

5.2 半同步复制的管理接口 33

5.3 半同步复制的监控 33

5.4 半同步复制的注意要点 34

第6章 多线程复制 36

6.1 单线程复制原理 36

6.2 DATABASE多线程复制 38

6.2.1 原理 38

6.2.2 系统变量的配置 40

6.3 LOGICAL_CLOCK多线程复制 40

6.3.1 原理 40

6.3.2 系统变量的配置 42

6.4 WRITESET多线程复制 42

6.4.1 原理 42

6.4.2 系统变量的配置 50

第7章 多源复制 51

7.1 复制通道 51

7.2 单通道操作命令 52

7.3 复制语句的向前兼容性 53

7.4 启动选项和复制通道选项 53

7.5 复制通道的命名约定 55

第8章 从库中继日志和状态日志 56

8.1 中继日志和状态日志概述 56

8.2 从库中继日志 57

8.3 从库状态日志 58

第9章 通过PERFORMANCE_SCHEMA库检查复制信息 66

9.1 PERFORMANCE_SCHEMA库中的复制信息记录表概述 66

9.2 PERFORMANCE_SCHEMA库中的复制信息记录表详解 70

9.2.1 replication_applier_configuration表 70

9.2.2 replication_applier_status表 71

9.2.3 replication_applier_status_by_coordinator表 72

9.2.4 replication_applier_status_by_worker表 74

9.2.5 replication_connection_configuration表 76

9.2.6 replication_connection_status表 78

9.2.7 replication_group_member_stats表 80

9.2.8 replication_group_members表 81

第10章 通过其他方式检查复制信息 83

10.1 复制状态变量 83

10.2 复制心跳信息 83

10.3 SHOW SLAVE STATUS语句输出信息详解 85

10.4 通过SHOW PROCESSLIST语句查看复制线程状态 92

10.5 SHOW MASTER STATUS语句输出详解 93

10.6 SHOW SLAVE HOSTS语句 93

第11章 MySQL复制延迟Seconds_Behind_Master究竟是如何计算的 96

11.1 “口口相传”的计算方法 96

11.2 探寻“正确”的计算方法 97

11.3 验证 100

11.3.1 我们想确认什么 100

11.3.2 提前确认一些信息 100

11.3.3 执行验证 102

11.4 小结 103

第12章 如何保证从库在意外中止后安全恢复 104

12.1 从库的崩溃与恢复概述 104

12.2 从库的崩溃与恢复详解 104

12.2.1 单线程复制的安全恢复 104

12.2.2 多线程复制的安全恢复 105

第13章 MySQL Server复制过滤 108

13.1 MySQL Server复制过滤规则概述 108

13.2 库级别复制过滤选项的评估 109

13.3 表级别复制过滤选项的评估 113

13.4 复制过滤规则的应用 115

方 案 篇

第14章 搭建异步复制 120

14.1 操作环境信息 120

14.2 全新初始化场景 121

14.2.1 传统复制 121

14.2.2 GTID复制 124

14.3 已有数据场景 126

14.3.1 传统复制 127

14.3.2 GTID复制 134

14.4 变量模板 140

14.4.1 传统复制模式的变量模板 140

14.4.2 GTID复制模式的变量模板 144

第15章 搭建半同步复制 146

15.1 半同步复制插件的安装和配置环境要求 146

15.2 半同步复制插件的安装和配置 147

15.2.1 关键步骤 147

15.2.2 详细过程 148

15.3 半同步复制工作状态的验证 152

第16章 通过扩展从库以提高复制性能 155

16.1 操作环境 155

16.2 横向扩展 156

16.2.1 扩展从库的简要步骤 157

16.2.2 扩展从库的详细过程 158

16.2.3 配置从库的读负载均衡 164

16.3 提高复制性能 165

第17章 复制模式的切换 167

17.1 操作环境信息 167

17.2 复制模式的相关概念 167

17.3 传统复制在线变更为GTID复制 173

17.3.1 简要步骤 173

17.3.2 详细过程 173

17.4 GTID复制在线变更为传统复制 179

17.4.1 简要步骤 179

17.4.2 详细过程 180

17.5 GTID复制离线变更为传统复制 186

17.5.1 简要步骤 186

17.5.2 详细过程 187

17.6 传统复制离线变更为GTID复制 191

17.6.1 简要步骤 191

17.6.2 详细过程 191

第18章 复制拓扑的在线调整 196

18.1 操作环境信息 196

18.2 传统复制模式下的复制拓扑在线调整 197

18.2.1 并行复制变更为串行复制 198

18.2.2 串行复制变更为并行复制 206

18.3 GTID复制模式下的复制拓扑在线调整 211

18.3.1 并行复制变更为串行复制 212

18.3.2 串行复制变更为并行复制 214

第19章 主从实例的例行切换 218

19.1 操作环境信息 218

19.2 在线切换 219

19.2.1 基于账号删除的在线切换 220

19.2.2 基于修改连接数的在线切换 232

第20章 数据库故障转移 239

20.1 操作环境信息 240

20.2 主库故障转移的关键步骤 241

20.3 主库故障转移的详细过程 243

20.3.1 环境的准备 243

20.3.2 执行步骤 245

第21章 搭建多源复制 255

21.1 操作环境信息 255

21.2 基于传统复制的多源复制 256

21.2.1 传统复制模式下的单线程多源复制 256

21.2.2 传统复制模式下的多线程多源复制 261

21.3 基于GTID复制的多源复制 263

21.3.1 GTID复制模式下的单线程多源复制 264

21.3.2 GTID复制模式下的多线程多源复制 267

21.4 多源复制拓扑中复制相关的操作语句变化 268

第22章 MySQL版本升级 273

22.1 MySQL版本之间的复制兼容性 273

22.2 升级复制的设置 274

第23章 将不同数据库的数据复制到不同实例 276

23.1 操作环境信息 276

23.2 通过设置复制过滤规则将不同数据库的数据复制到不同实例 277

23.2.1 通过只读选项配置复制过滤规则 278

23.2.2 通过动态语句配置复制过滤规则 286

第24章 发生数据误操作之后的处理方案 293

24.1 操作环境信息 294

24.2 主库发生误操作后的数据恢复 295

24.2.1 通过延迟复制恢复数据 296

24.2.2 通过闪回工具恢复数据 302

24.3 从库发生误操作后的数据恢复 309

24.3.1 通过修改系统变量slave_exec_mode恢复数据 309

24.3.2 通过GTID特性注入空事务恢复数据 316

第25章 常用复制故障排除方案 323

25.1 确认故障现象 323

25.2 信息收集与故障排查 323

25.3 复制故障的修复 325

25.4 无法解决的问题 326

参 考 篇

第26章 二进制日志文件的基本组成 328

26.1 什么是二进制日志 328

26.2 二进制日志的组成 328

26.3 二进制日志内容解析 329

26.3.1 基于row的复制的二进制日志内容解析 330

26.3.2 基于statement的复制的二进制日志内容解析 344

26.4 小结 351

第27章 常规DDL操作解析 352

27.1 操作环境信息 352

27.2 常规DDL操作示例 353

27.3 二进制日志内容解析 356

27.4 小结 359

第28章 为何二进制日志中同一个事务的事件时间点会乱序 360

28.1 操作环境信息 360

28.2 验证前的准备 360

28.3 验证过程 361

第29章 复制AUTO_INCREMENT字段 367

29.1 操作环境信息 367

29.2 复制AUTO_INCREMENT字段的操作示例 367

29.3 对二进制日志的解析及解释 368

29.3.1 基于row的复制中AUTO_INCREMENT字段的复制 368

29.3.2 基于statement的复制中AUTO_INCREMENT字段的复制 369

29.3.3 混合复制中AUTO_INCREMENT字段的复制 371

29.4 使用AUTO_INCREMENT字段时的注意事项 371

29.5 小结 372

第30章 复制CREATE ... IF NOT EXISTS语句 373

30.1 操作环境信息 373

30.2 复制CREATE ... IF NOT EXISTS语句的操作演示 374

30.3 二进制日志解析结果的解释 375

30.4 小结 376

第31章 复制CREATE TABLE ... SELECT语句 377

31.1 操作环境信息 377

31.2 复制CREATE TABLE ... SELECT语句的操作示例 377

31.3 二进制日志的解析及解释 380

31.3.1 statement格式二进制日志的解析及解释 380

31.3.2 row格式和mixed格式二进制日志的解析及解释 381

31.4 使用CREATE TABLE ... SELECT语句时的注意事项 384

31.5 小结 384

第32章 在主从复制中使用不同的表定义 385

32.1 操作环境信息 385

32.2 主从库的表字段数不同时如何复制 386

32.2.1 源表字段数多于目标表字段数 386

32.2.2 目标表字段数多于源表字段数 388

32.3 不同类型字段的复制 389

32.3.1 属性提升 390

32.3.2 有损转换与无损转换 390

32.4 小结 391

第33章 复制中的调用功能 392

33.1 操作环境信息 392

33.2 复制中的调用功能操作示例 392

33.2.1 在READ-COMMITTED隔离级别、基于row的复制场景下数据库的

操作记录 393

33.2.2 在READ-COMMITTED隔离级别、基于statement的复制场景下

数据库的操作记录 396

33.3 二进制日志的解析及解释 396

33.3.1 row和mixed格式二进制日志的解析及解释 396

33.3.2 statement格式二进制日志的解析及解释 402

33.4 小结 407

第34章 复制LIMIT子句 408

34.1 操作环境信息 408

34.2 复制LIMIT子句的操作示例 408

34.3 二进制日志的解析及解释 409

34.3.1 statement格式二进制日志的解析及解释 410

34.3.2 row格式和mixed格式二进制日志的解析及解释 411

34.4 小结 414

第35章 复制LOAD DATA语句 415

35.1 操作环境信息 415

35.2 复制LOAD DATA语句的操作示例 416

35.2.1 准备演示数据 416

35.2.2 LOAD DATA语句的操作 417

35.3 二进制日志的解析及解释 417

35.3.1 statement格式二进制日志的解析及解释 417

35.3.2 row格式和mixed格式二进制日志的解析及解释 419

35.4 小结 420

第36章 系统变量max_allowed_packet对复制的影响 421

36.1 系统变量简介 421

36.2 操作环境信息 422

36.3 max_allowed_packet对复制的影响操作示例 423

36.3.1 max_allowed_packet对主库的影响 423

36.3.2 max_allowed_packet对从库的影响 424

36.4 小结 427

第37章 复制临时表 429

37.1 操作环境信息 429

37.2 复制临时表的操作示例 429

37.2.1 基于statement的复制且隔离级别为REPEATABLE-READ 430

37.2.2 基于row的复制且隔离级别为REPEATABLE-READ 432

37.2.3 混合复制且隔离级别为REPEATABLE-READ 433

37.2.4 使用临时表时如何安全关闭从库 433

37.3 与临时表相关的其他注意事项 435

37.4 小结 435

第38章 复制中的事务不一致问题 436

38.1 事务不一致的场景类型 436

38.2 事务不一致的原因 437

38.3 事务不一致的后果 437

38.4 小结 438


短评

特别特别棒,货比三家才买的,店主人很好,回答问题很有耐心,也很详细,有需要还会再来的包装非常好,很严实,值这个价格

2020-10-31 09:47:45

标签
mysql