《MySQL运维内参 MySQL、Galera、Inception核心原理与最佳实践》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:周彦伟,王竹峰,强昌金著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2017
  • ISBN:9787121312359
  • 页数:613 页
图书介绍:MySQL能够处理拥有数十亿行的大型数据库,随着越来越多的公司和大型组织发现MySQL完全能够满足自己的数据库处理需求,其用户量一直还会持续高速增长。本书是一本介绍如何高效使用MySQL进行运维的高级实战指导用书,除MySQL核心技术之外,更是首次披露热门工具Galera与Inception的独家内幕。

第一部分 MySQL篇 5

1 MySQL源代码入门 5

MySQL源代码的组织结构 5

Linux下的编译 7

安装MySQL库 11

MySQL 5.7权限处理 12

2 MySQL启动过程 14

3 连接的生命与使命 22

用户连接线程创建 22

MySQL处理请求 27

总结 31

4 MySQL表对象缓存 32

表结构的实现原理 32

涉及的参数变量 42

优缺点总结 45

存在的问题 45

5 InnoDB初探 47

InnoDB的源代码目录结构 47

InnoDB存储引擎文件组织 49

InnoDB体系结构 52

InnoDB存储引擎启动与关闭 54

InnoDB存储引擎的启动 55

InnoDB存储引擎的关闭 59

6 InnoDB数据字典 66

背景 66

系统表结构 67

字典表加载 69

Rowid管理 75

总结 76

7 InnoDB数据存储结构 77

表空间文件组成结构 78

段 78

簇 79

页面 80

段、簇、页面组织结构 80

8 InnoDB索引实现原理 91

背景 91

B+树及B树的区别 91

索引的设计 92

聚簇索引和二级索引 94

二级索引指针 95

神奇的B+树网络 97

InnoDB索引的插入过程 99

一个页面至少要存储几条记录 107

页面结构管理 110

文件管理头信息 111

页面头信息 113

最小记录和最大记录 115

页面数据空间管理 116

经典的槽管理 117

页面尾部 121

页面重组 122

索引页面的回收 123

9 InnoDB记录格式 125

背景 125

从源码入手了解行格式 126

总结 133

10 揭秘独特的两次写 134

单一页面刷盘 135

批量页面刷盘 136

两次写组织结构 137

批量刷盘两次写实现原理 138

两次写的作用 139

发散思维 139

总结 139

11 InnoDB日志管理机制 141

InnoDB Buffer Pool 141

REDO LOG日志文件管理的用途 147

MTR InnoDB物理事务 150

日志的意义 157

日志记录格式 159

日志刷盘时机 163

REDO日志恢复 165

数据库回滚 180

数据库UNDO段管理 181

数据库UNDO日志记录格式 186

回滚时刻 188

总结 189

12 MySQL 5.7中崭新的MySQL sys Schema 191

Performance Schema的改进 191

sys Schema介绍 192

sys Schema视图摘要 193

sys Schema重点视图与应用场景 194

使用风险 198

总结 198

13方便的MySQL GTID 199

GTID相关概念 200

什么是GTID 200

GTID集合 200

GTID生命周期 201

GTID的维护 202

gtid_executed表 202

gtid_executed表压缩 203

GTID搭建主从 204

搭建主从时,需要注意的MySQL参数 204

开启GTID 205

搭建主从 205

使用GTID案例总结 206

如何跳过一个GTID 206

利用GTID模式快速改变 210

主从复制关系 210

在线将传统模式复制改为GTID模式复制 211

在线将GTID模式复制改为传统模式复制 213

GTID的限制 213

14 MySQL半同步复制 215

半同步特性 215

半同步主库端 217

半同步从库端 222

半同步实现 224

插件安装 228

半同步自动开关 228

15 MySQL 5.7多线程复制原理 229

背景 229

行之有效的延迟优化方法 229

MySQL 5.6的多线程复制 230

MySQL 5.7的多线程复制 231

ordered commit 232

多线程复制分发原理 238

异常故障恢复 239

16大量MySQL表导致服务变慢的问题 244

背景 244

问题分析 245

案例解决 247

总结 251

17 MySQL快速删除大表 252

背景 252

问题分析 252

案例解决 255

发散思维 256

总结 257

18两条不同的插入语句导致的死锁 258

背景 258

问题分析 260

发散思维 265

总结 265

19 MySQL在并发删除同一行数据时导致死锁的分析 266

背景 266

问题分析 267

发散思维 276

总结 276

20参数SQL_SLAVE_SKIP_COUNTER的奥秘 277

21 Binlog中的时间戳 280

背景 280

问题分析 280

发散思维 284

事务中的事件顺序 285

问题延伸 285

show processlist中的Time 288

总结 291

22 InnoDB中Rowid对Binlog的影响 292

背景 292

问题分析 292

总结 297

23 MySQL备份:Percona Xtra-Backup的原理与实践 298

备份背景及类型 298

认识Percona XtraBackup 299

XtraBackup的工作流程 300

XtraBackup的备份原理 302

XtraBackup需要的权限 304

innobackupex常用的备份选项说明 304

XtraBackup备份实践 307

全量备份 307

增量备份 308

并行备份 311

其他备份 311

案例实践与心得 312

建议与提醒 314

24 MySQL分库分表 315

分库分表的种类 315

分库分表的原则 317

分库分表实现 320

数据库层的实现 320

业务层的实现 322

25 MySQL数据安全 323

单机安全 324

集群安全 324

备份安全 324

MySQL实例安全保证 325

Double Write 325

REDO LOG 325

MySQL集群安全保证 327

传统的主从模式如何保证数据库安全 328

Semi_Sync Replication方式的复制 332

MySQL集群化如何保证数据库安全 333

总结 335

26 MySQL性能拾遗 337

适当的数据文件大小 337

碎片空洞问题 338

设计问题 338

合理设计表结构 339

冗余存储 339

拆分存储 341

重复存储 342

特别提醒 342

正确使用索引 343

MySQL系统参数 345

内存和CPU 347

磁盘的革命 348

云中漫步 351

总结 354

27 MySQL Group Replication 356

Group Replication概述 356

组的概念 357

多主复制 358

单独的通信机制 358

Group Replication服务模式 359

单主模式 359

多主模式 360

服务模式的配置 363

Binlog Event的多线程执行 363

group_replication_ applier通道 363

基于主键的并行执行 364

搭建Group Replication复制环境 364

MySQL的参数设置 365

Group Replication插件的使用 366

Group Replication插件的基本参数设置 367

Group Replication的数据库用户 368

Group Replication组初始化 368

新成员加入组 369

Group Replication的高可用性 370

组内成员数量的变化 371

强制移除故障成员 371

Group Replication的监控 371

Group Replication的基本原理 374

状态机复制 374

分布式的状态机复制 375

分布式的高可用数据库 376

深入理解Group Replication中事务的执行过程 377

本地事务控制模块 378

成员间的通信模块 379

全局事务认证模块 382

异地事务执行模块 387

事务流程的总结 387

深入理解成员加入组的过程 389

组视图 389

加入组时视图的切换 390

View_change_log_event 391

恢复 391

28 MySQL Document Store面面观 394

新的JSON数据类型和JSON函数 395

JSON数据类型 395

JSON函数详解 396

JSON函数的运用 408

MySQL X Plugin和X Protocol 410

支持NoSQL所做的努力 410

安装MySQL X Plugin 411

MySQL Shell 411

安装MySQL Shell 412

运行MySQL Shell 413

在MySQL Shell中操作JSON文档 414

用脚本执行MySQL Shell 420

X DevAPI 422

总结 425

参考资料 425

第二部分 Galera篇 430

29 Galera Cluster的设计与实现 430

Galera Cluster的优点 430

Galera的引入 431

Galera接口 433

总结 442

30 Galera参数解析 443

状态参数 443

变量参数 448

31 Galera的验证方法 455

Binlog与Galera的关系 455

验证方法 456

32 Galera的消息传送 458

33 GCache实现原理 461

配置参数 461

实现原理 462

发散思维 465

34大话SST/IST细节 467

初始化节点环境 468

连接到集群并且做SST/IST 469

如何提供增量数据 477

总结 477

35 Donor/Desynced详解 479

实现方式 480

意义何在 480

问答环节 481

36 Galera的并发控制机制 482

数据复制 482

写集验证 483

写集APPLY 483

事务Conmmit 484

37 Galera的流量控制 485

流量控制的定义 485

流量控制的实现原理及影响 486

两个问题 488

38 Galera Cluster影响单节点执行效率的因素 489

单点验证 489

并发控制 490

等待GTID 490

总结 490

39 grastate.dat文件揭秘 491

引子 491

分析研究 492

总结 492

40 Galera Cluster从库的转移 494

没有开启Server级GTID的情况 495

开启了GTID(server级)的情况 496

总结 500

41 Galera Cluster节点与其从库的随意转换 501

背景 501

从节点向PXC节点的转换 502

PXC节点向异步从节点的转换 504

42 业务更新慢,不是由Galera引起的 505

43 在线改表引发的Galera Cluster集群死锁 516

背景 516

用Binlog来代替触发器 517

表名交换 520

Galera Cluster中的问题 524

一个有趣的实验 526

解决方案 531

总结 532

第三部分 Inception篇 537

44 Inception诞生记 537

关于SQL审核 537

半自动化方法 537

人肉法 540

不满现状的追求 542

何谓Inception 543

45 Inception安装与使用 545

下载和编译 545

启动配置 547

线上配置需求 548

需要额外注意的点 549

使用方法 549

举例说明 551

环境变量的设置 553

46支持选项 555

选项说明 555

DDL与DML语句分离 559

小技巧 560

47 Inception的备份回滚 562

备份存储架构 562

备份所需条件 567

48审核规范 568

支持的语句类型 568

公共检查项 569

插入语句检查项 570

更新、删除语句检查项 570

表属性检查项 570

列属性检查项 571

索引属性检查项 572

修改表语句检查项 573

总结 573

49参数变量 574

语法和变量 574

注意事项 578

50友好的结果集 580

结果集结构 580

总结 583

51命令集语句 584

远程信息获取 584

显示本地全部变量 586

显示本地某个变量 586

设置本地变量 587

显示OSC执行进度 588

查看当前processlist 589

52 Inception的彩蛋 591

对OSC的支持 591

可选的OSC参数 591

查看OSC的执行进度 593

中止OSC的执行 596

查看所有OSC执行信息 597

Inception对SQL执行情况的统计 597

打印语法树 599

53 Inception设计 609

Inception之源 609

Inception执行流程 611