失效链接处理 |
MySQL实战 陈臣 PDF 下载
下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
https://product.dangdang.com/11425669308.html
相关截图: 资料简介: 本书以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 |