×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
暂无评论
图文详情
  • ISBN:9787115610089
  • 装帧:平装-胶订
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:716
  • 出版时间:2023-03-01
  • 条形码:9787115610089 ; 978-7-115-61008-9

本书特色

- “MySQL实战”公众号作者、甲骨文数据库专家、一线技术工程师陈臣倾力打造的诚意之作

- 内容丰富实用,基于MySQL 8.0编写,开箱即用,原理与实战相结合

- 讲解详细,分析透彻,从源码角度分析组复制核心模块的实现细节

内容简介

本书以MySQL 8.0为主,全面系统地阐述了MySQL日常使用及管理过程中的一些常用知识点:安装、复制、binlog、备份、监控、DDL、线程池、中间件、常用工具、组复制、InnoDB Cluster、JSON、MySQL 8.0的新特性。 本书定位于实战,目的是让读者拿来即用,快速上手MySQL。除了实战,本书还花费了大量的篇幅来讲解MySQL中一些常见操作、常用工具的实现原理。 组复制是MySQL官方推荐的高可用方案,本书会从源码角度分析组复制的一些核心模块的实现细节,包括分布式恢复、冲突检测、事务一致性以及流量控制机制等。

目录

第 1章 MySQL入门、安装与服务的管理 1

1.1 MySQL的历史 1

1.2 MySQL的安装 2

1.2.1 下载MySQL 3

1.2.2 基于二进制包的安装 8

1.2.3 基于源码包的安装 14

1.2.4 配置文件的读取顺序 19

1.3 MySQL服务的管理 21

1.3.1 使用/etc/init.d/mysqld管理MySQL服务 22

1.3.2 使用systemd管理MySQL服务 27

1.4 本章总结 33

第 2章 复制 34

2.1 复制的原理及搭建 35

2.1.1 复制的搭建 36

2.1.2 参考资料 41

2.2 GTID复制 41

2.2.1 GTID出现的背景 41

2.2.2 GTID的搭建 42

2.2.3 GTID的原理 42

2.2.4 GTID的相关参数 44

2.2.5 GTID的相关函数 50

2.2.6 在线修改复制模式 51

2.2.7 设置@@GLOBAL.GTID_PURGED时的注意事项 54

2.2.8 参考资料 55

2.3 半同步复制 55

2.3.1 事务的两阶段提交协议 56

2.3.2 半同步复制的原理 57

2.3.3 半同步复制的安装 58

2.3.4 半同步复制的注意事项 60

2.3.5 半同步复制的常用参数 60

2.4 并行复制 63

2.4.1 并行复制方案 63

2.4.2 如何开启并行复制 71

2.4.3 参考资料 71

2.5 多源复制 72

2.5.1 多源复制的搭建 72

2.5.2 多源复制搭建过程中的注意事项 73

2.5.3 多源复制的管理 74

2.6 延迟复制 74

2.6.1 如何开启延迟复制 75

2.6.2 如何使用延迟复制恢复误删的表 75

2.6.3 延迟复制的总结 77

2.7 本章总结 77

第3章 深入解析binlog 79

3.1 binlog的格式 79

3.1.1 STATEMENT 79

3.1.2 ROW 80

3.1.3 MIXED 81

3.2 如何解读binlog的内容 82

3.2.1 解析STATEMENT格式的二进制日志 82

3.2.2 解析ROW格式的二进制日志 88

3.3 如何解读 relay log 的内容 92

3.4 binlog 中的事件类型 94

3.5 基于 python-mysql-replication 打造一个 binlog解析器 101

3.6 本章总结 109

第4章 深入MySQL的复制管理 110

4.1 常见的管理操作 110

4.1.1 查看主库的状态 110

4.1.2 查看从库复制的状态 111

4.1.3 搭建复制 113

4.1.4 开启复制 115

4.1.5 停止复制 117

4.1.6 在主库上查看从库IP和端口信息 117

4.1.7 查看实例当前拥有的binlog 118

4.1.8 删除binlog 118

4.1.9 查看binlog的内容 118

4.1.10 RESET MASTER、RESET SLAVE和RESET SLAVE ALL的区别 119

4.1.11 跳过指定事务 120

4.1.12 操作不写入binlog 121

4.1.13 判断主库的某个操作是否已经在从库上执行 121

4.1.14 在线设置复制的过滤规则 122

4.2 复制的监控 123

4.2.1 连接 123

4.2.2 事务重放 125

4.2.3 多线程复制 126

4.2.4 过滤规则 128

4.2.5 组复制 129

4.3 主从延迟 129

4.3.1 如何分析主从延迟 129

4.3.2 主从延迟的常见原因及解决方法 132

4.3.3 如何解读Seconds_Behind_Master 134

4.3.4 参考资料 142

4.4 复制中的常见问题及解决方法 142

4.4.1 I/O线程连接不上主库 142

4.4.2 server_id重复 143

4.4.3 包的大小超过slave_max_allowed_packet的限制 143

4.4.4 从库需要的binlog在主库上不存在 144

4.4.5 从库的GTID多于主库的 147

4.4.6 在执行插入操作时,提示键冲突 149

4.4.7 在执行删除或更新操作时,提示记录不存在 150

4.4.8 主从数据不一致 150

4.5 本章总结 150

第5章 备份 152

5.1 mysqldump 155

5.1.1 mysqldump的实现原理 155

5.1.2 mysqldump的常用选项 160

5.1.3 mysqldump的常见用法 165

5.1.4 总结 166

5.2 mydumper 166

5.2.1 mydumper的安装 167

5.2.2 mydumper的实现原理 167

5.2.3 mydumper的参数解析 170

5.2.4 myloader的参数解析 177

5.2.5 mydumper和myloader的常见用法 179

5.2.6 总结 180

5.3 XtraBackup 180

5.3.1 XtraBackup的安装 181

5.3.2 基于源码分析XtraBackup的实现原理 182

5.3.3 XtraBackup的常见用法 192

5.3.4 Xtrabackup的重要参数 205

5.3.5 XtraBackup的注意事项 206

5.3.6 备份用户需要的权限 207

5.3.7 参考资料 208

5.4 克隆插件 208

5.4.1 克隆插件的安装 209

5.4.2 克隆插件的使用 209

5.4.3 查看克隆操作的进度 212

5.4.4 基于克隆数据搭建从库 214

5.4.5 克隆插件的实现细节 214

5.4.6 克隆插件的限制 215

5.4.7 克隆插件与XtraBackup的异同 216

5.4.8 克隆插件的参数解析 216

5.4.9 参考资料 217

5.5 MySQL Shell Dump & Load 217

5.5.1 MySQL Shell Dump & Load的用法 218

5.5.2 MySQL Shell Dump & Load的关键特性 221

5.5.3 util.dumpInstance的实现原理 221

5.5.4 util.dumpInstance的参数解析 222

5.5.5 util.loadDump的参数解析 224

5.5.6 MySQL Shell Dump & Load的注意事项 226

5.5.7 参考资料 226

5.6 使用XtraBackup搭建从库 226

5.6.1 使用XtraBackup搭建从库的基本步骤 227

5.6.2 基于从库备份搭建从库的注意事项 230

5.6.3 设置GTID_PURGED的注意事项 230

5.6.4 使用XtraBackup 8.0搭建从库的注意事项 231

5.6.5 总结 233

5.7 指定时间点(位置点)的恢复 234

5.8 搭建binlog server 236

5.8.1 基于mysqlbinlog搭建binlog server 236

5.8.2 参考资料 238

5.9 检测备份的有效性 238

5.10 本章总结 239

第6章 监控 241

6.1 Zabbix 242

6.1.1 安装Zabbix Server 242

6.1.2 安装Zabbix Agent 250

6.2 安装MySQL监控插件PMP 251

6.3 深入理解PMP 256

6.3.1 ss_get_mysql_stats.php源码分析 258

6.3.2 基于ss_get_mysql_stats.php自定义监控项 263

6.4 Zabbix常见问题定位及性能优化 266

6.4.1 定位监控项的状态Not supported 266

6.4.2 分区表 268

6.4.3 Zabbix Server的参数优化 270

6.4.4 Zabbix API 273

6.4.5 参考资料 278

6.5 PMM 278

6.5.1 PMM的体系架构 279

6.5.2 安装PMM Server 280

6.5.3 安装PMM Client 283

6.5.4 添加MySQL服务 288

6.5.5 Query Analytics 290

6.5.6 深入理解PMM Server 292

6.5.7 设置告警 297

6.5.8 PMM的常见问题 299

6.5.9 参考资料 305

6.6 MySQL中常用的监控指标 306

6.6.1 连接相关 306

6.6.2 Com相关 307

6.6.3 Handler相关 308

6.6.4 临时表相关 309

6.6.5 Table Cache相关 310

6.6.6 文件相关 311

6.6.7 主从复制相关 312

6.6.8 缓冲池相关 312

6.6.9 redo log相关 313

6.6.10 锁相关 314

6.6.11 排序相关 315

6.6.12 查询相关 316

6.6.13 其他重要指标 316

6.7 本章总结 317

第7章 DDL 318

7.1 Online DDL 319

7.1.1 Online DDL的分类 320

7.1.2 Online DDL的实现原理 324

7.1.3 如何检查DDL的进度 325

7.1.4 MySQL 8.0.12引入的秒级加列特性 327

7.1.5 Online DDL的优缺点 329

7.1.6 Online DDL的注意事项 329

7.1.7 参考资料 331

7.2 pt-online-schema-change 331

7.2.1 pt-online-schema-change的实现原理 331

7.2.2 pt-online-schema-change的参数解析 337

7.2.3 pt-online-schema-change的优缺点 345

7.2.4 pt-online-schema-change的注意事项 345

7.3 gh-ost 346

7.3.1 gh-ost的实现原理 346

7.3.2 gh-ost的参数解析 354

7.3.3 与gh-ost进行交互 358

7.3.4 gh-ost的优缺点 359

7.4 元数据锁 360

7.4.1 元数据锁引入的背景 360

7.4.2 元数据锁的基本概念 362

7.4.3 在MySQL 5.7和8.0中如何定位DDL被阻塞的问题 363

7.4.4 在MySQL 5.6中如何定位DDL被阻塞的问题 365

7.5 本章总结 367

第8章 连接池和线程池 369

8.1 连接池 369

8.1.1 连接池的运行原理 369

8.1.2 常用的JDBC连接池 370

8.1.3 c3p0连接池 371

8.1.4 DBCP连接池 374

8.1.5 参考配置 377

8.1.6 总结 378

8.2 MySQL线程池 378

8.2.1 线程池的实现原理 379

8.2.2 如何开启线程池功能 380

8.2.3 MySQL企业版线程池参数解析 380

8.2.4 Percona Server线程池参数解析 381

8.2.5 MySQL企业版线程池和Percona Server线程池的对比 382

8.2.6 线程池的适用场景 384

8.2.7 线程池的压测结果 384

8.2.8 线程池的监控 385

8.2.9 参考资料 389

8.3 MySQL server has gone away深度解析 389

8.3.1 出现MySQL server has gone away错误的常见原因 389

8.3.2 interactive_timeout和wait_timeout的区别 390

8.3.3 wait_timeout设置为多大比较合适 393

8.4 本章总结 395

第9章 MySQL的常用工具 396

9.1 sysbench 398

9.1.1 安装sysbench 398

9.1.2 sysbench用法讲解 399

9.1.3 对MySQL进行基准测试的基本步骤 399

9.1.4 如何分析MySQL的基准测试结果 401

9.1.5 如何使用sysbench对服务器性能进行测试 402

9.1.6 MySQL常见的测试场景及对应的SQL语句 404

9.1.7 如何自定义sysbench测试脚本 407

9.1.8 总结 411

9.2 pt-archiver 411

9.2.1 安装 411

9.2.2 实现原理 411

9.2.3 常见用法 413

9.2.4 常用参数 416

9.2.5 总结 418

9.3 pt-config-diff 418

9.4 pt-ioprofile 419

9.5 pt-kill 420

9.5.1 实现原理 420

9.5.2 过滤逻辑 422

9.5.3 常见用法 424

9.6 pt-pmp 425

9.7 pt-query-digest 426

9.7.1 常见用法 426

9.7.2 常用参数 429

9.8 pt-show-grants 430

9.9 pt-slave-restart 431

9.10 pt-stalk 433

9.11 pt-table-checksum 435

9.11.1 实现原理 435

9.11.2 常见用法 440

9.11.3 常用参数 440

9.12 pt-table-sync 443

9.12.1 实现原理 443

9.12.2 常见用法 446

9.12.3 常用参数 446

9.13 pt-upgrade 448

9.14 本章总结 453

第 10章 中间件 455

10.1 ProxySQL的安装 458

10.2 ProxySQL入门 458

10.3 多层配置系统 460

10.4 读写分离 463

10.5 深入理解ProxySQL表 470

10.6 ProxySQL的高级特性 475

10.6.1 定时器 475

10.6.2 SQL审计 476

10.6.3 查询重写 477

10.6.4 mirroring 479

10.6.5 SQL黑名单 481

10.7 ProxySQL连接池 482

10.8 ProxySQL Cluster 490

10.8.1 搭建ProxySQL Cluster 491

10.8.2 添加一个新的节点 493

10.9 ProxySQL的常见参数 494

10.9.1 管理参数 495

10.9.2 监控参数 496

10.9.3 MySQL参数 498

10.9.4 如何修改参数 501

10.10 ProxySQL中的常见问题 501

10.10.1 如何自定义ProxySQL的数据目录 501

10.10.2 通过USE DBNAME切换数据库 502

10.10.3 ProxySQL的高可用性 502

10.11 本章总结 502

第 11章 组复制 504

11.1 部署组复制 506

11.1.1 准备安装环境 506

11.1.2 初始化MySQL实例 507

11.1.3 启动组复制 510

11.1.4 添加节点 511

11.2 单主模式和多主模式 512

11.2.1 单主模式和多主模式的区别 512

11.2.2 单主模式和多主模式的在线切换 515

11.3 监控组复制 516

11.3.1 replication_group_members 516

11.3.2 replication_group_member_stats 517

11.4 组复制的要求和限制 518

11.5 组复制的常见管理操作 521

11.5.1 强制组成员的重新配置 521

11.5.2 如何设置IP白名单 523

11.5.3 如何查找单主模式下的Primary节点 524

11.5.4 新主选举算法 524

11.5.5 如何查看Secondary节点的延迟情况 529

11.5.6 大事务 530

11.5.7 查看组复制的内存使用 531

11.6 组复制的实现原理 533

11.6.1 数据库状态机 533

11.6.2 事务在组复制中的处理流程 533

11.6.3 参考资料 535

11.7 组复制的实现细节 536

11.8 组复制的分布式恢复 545

11.8.1 分布式恢复的实现原理 545

11.8.2 分布式恢复的相关参数 552

11.9 组复制的冲突检测 553

11.9.1 write_set 553

11.9.2 冲突检测数据库 556

11.9.3 冲突检测的实现细节 557

11.9.4 冲突检测数据库的清理逻辑 560

11.10 组复制的故障检测 562

11.10.1 模拟网络分区 562

11.10.2 故障检测流程 566

11.10.3 XCom Cache 567

11.10.4 注意事项 569

11.10.5 参考资料 569

11.11 组复制的事务一致性 569

11.11.1 group_replication_consistency 570

11.11.2 总结 573

11.11.3 参考资料 573

11.12 组复制的流量控制机制 573

11.12.1 触发流控的条件 574

11.12.2 配额的计算逻辑 576

11.12.3 配额的作用时机 581

11.12.4 流控的相关参数 583

11.12.5 总结 584

11.12.6 参考资料 585

11.13 组复制的重点参数 585

11.14 本章总结 588

第 12章 InnoDB Cluster 590

12.1 MySQL Shell 591

12.1.1 MySQL Shell的安装 592

12.1.2 MySQL Shell的使用 592

12.1.3 X DevAPI的关键特性 595

12.1.4 MySQL Shell工具集 598

12.1.5 MySQL Shell的使用技巧 605

12.2 MySQL Router 605

12.2.1 MySQL Router的安装 606

12.2.2 MySQL Router的使用 606

12.2.3 启动MySQL Router 612

12.2.4 测试MySQL Router 612

12.2.5 MySQL Router的注意事项 613

12.3 InnoDB Cluster的搭建 614

12.3.1 准备安装环境 614

12.3.2 初始化MySQL实例 614

12.3.3 创建超级管理员账号 616

12.3.4 配置实例 616

12.3.5 创建InnoDB Cluster 618

12.3.6 添加节点 619

12.3.7 查看集群的状态 622

12.3.8 部署MySQL Router 623

12.4 InnoDB Cluster的管理操作 624

12.4.1 dba对象支持的操作 624

12.4.2 cluster对象支持的操作 630

12.5 本章总结 643

附录A JSON 645

附录B MySQL 8.0的新特性 672

展开全部

相关资料

MySQL是流行的开源数据库。陈臣所著的《MySQL实战》是基于他自己的大规模数据库管理实践,结合源码、官方文档和原理形成的一本书,系统地介绍了在MySQL的管理、运维和开发过程中使用范围较广但参考资料匮乏的工具。

——谢鹏

甲骨文(Oracle)公司全球副总裁

中国区技术总经理



看完这本书的目录及样章,深感陈臣满满的诚意。全书紧紧围绕MySQL实战的方方面面展开,有详细的实战细节,更是对几个关键知识点给了原理解读,让读者能更好地理解,知其然且知其所以然。以“组复制”这一章为例,前半

作者简介

陈臣 甲骨文(Oracle)公司首席工程师,前vivo互联网数据库专家,有超过10年的数据库管理和架构经验,擅长MySQL数据库日常操作的原理剖析。公众号“MySQL实战”作者,博客园推荐博客博主iVictor,博客全网阅读量超300万。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航