MySQL高可用实践
作者:王雪迎 著
出版时间: 2020年版
内容简介
MySQL数据库是现代软件系统基础应用的核心组成部分,如何保持MySQL的高可用性在系统应用中就变得极为重要。本书从复制、中间件、集群、存储、优化五个方面介绍MySQL高可用技术。 本书分为16章,内容包括异步复制、半同步复制、GTID与复制、复制拓扑与性能、延迟复制与部分复制、组复制、MySQL Router、MySQL Fabric、MMM、MHA、Keepalived + LVS、Heartbeat + HAProxy、InnoDB Cluster、Galera Cluster、DRBD、优化案例等。 本书适合DBA、系统管理运维、应用程序开发、架构师等MySQL相关技术人员作为参考书,也适合作为高等院校和培训学校相关专业的技术培训教材。
目录
目 录
第1章 异步复制 1
1.1 MySQL异步复制简介 1
1.1.1 复制的用途 1
1.1.2 复制如何工作 2
1.1.3 两阶段提交 6
1.2 搭建实验环境 8
1.2.1 实验环境说明 8
1.2.2 安装MySQL 8
1.3 配置异步复制 12
1.3.1 空库 12
1.3.2 脱机 16
1.3.3 联机 17
1.4 小结 20
第2章 半同步复制 21
2.1 MySQL半同步复制简介 21
2.2 性能提升 22
2.2.1 ACK异步化 22
2.2.2 控制从库反馈的数量 24
2.2.3 二进制日志互斥锁的改进 25
2.3 数据一致性 26
2.3.1 rpl_semi_sync_master_wait_point配置 26
2.3.2 sync_binlog配置 28
2.3.3 sync_relay_log配置 30
2.4 管理接口 32
2.5 配置半同步复制 32
2.5.1 安装插件 32
2.5.2 启用半同步复制 34
2.5.3 监控半同步复制 35
2.6 测试 37
2.6.1 正常提交事务 37
2.6.2 回滚事务 38
2.6.3 rpl_semi_sync_master_wait_no_slave与从库数量 40
2.7 小结 44
第3章 GTID与复制 45
3.1 GTID简介 45
3.1.1 什么是GTID 45
3.1.2 GTID的格式与存储 46
3.2 GTID生命周期 54
3.2.1 典型事务的GTID生命周期 54
3.2.2 GTID分配 57
3.2.3 gtid_next系统变量 58
3.2.4 gtid_purged系统变量 60
3.3 GTID自动定位 68
3.4 配置GTID复制 70
3.4.1 联机配置GTID复制 70
3.4.2 联机更改复制模式 74
3.4.3 GTID相关系统变量 75
3.5 GTID运维 76
3.5.1 跳过一个事务 76
3.5.2 mysqldump导出 77
3.5.3 主从切换 78
3.6 GTID限制 81
3.7 GTID集合运算函数 84
3.7.1 GTID内置函数 84
3.7.2 用户自定义函数 84
3.7.3 使用示例 85
3.8 小结 88
第4章 复制拓扑结构与性能 89
4.1 复制拓扑结构 89
4.1.1 一主一(多)从 89
4.1.2 双(多)主复制 91
4.1.3 多源复制 99
4.1.4 Blackhole引擎与日志服务器 104
4.2 复制性能 108
4.2.1 测试规划 108
4.2.2 sync_binlog与innodb_flush_log_at_trx_commit 111
4.2.3 组提交与多线程复制 111
4.2.4 基于WriteSet的多线程复制 117
4.3 小结 120
第5章 延迟复制与部分复制 121
5.1 延迟复制 121
5.1.1 延迟复制简介 121
5.1.2 延迟复制时间戳 124
5.1.3 监控延迟复制 125
5.2 部分复制 125
5.2.1 部分复制简介 126
5.2.2 评估库级复制选项 126
5.2.3 评估表级复制选项 129
5.2.4 复制规则应用 134
5.2.5 部分复制示例 136
5.3 主从切换 139
5.3.1 计划内主从切换 139
5.3.2 计划外切换 140
5.4 小结 148
第6章 组复制 149
6.1 组复制基本原理 149
6.1.1 MySQL复制技术 149
6.1.2 组复制使用场景 151
6.1.3 组复制相关服务 151
6.1.4 组复制插件体系结构 152
6.1.5 组复制分布式恢复 153
6.2 组复制安装部署 156
6.2.1 部署单主模式组复制 157
6.2.2 组复制监控 165
6.2.3 容错示例 165
6.3 组复制性能 172
6.3.1 概述 172
6.3.2 测试规划 174
6.3.3 消息压缩 177
6.3.4 组通信线程循环 178
6.3.5 写入集 178
6.3.6 流控 179
6.3.7 其他配置 181
6.3.8 主从、半同步、组复制性能对比测试 183
6.4 组复制要求与限制 185
6.4.1 组复制要求 185
6.4.2 组复制限制 187
6.5 小结 188
第7章 MySQL Router 189
7.1 MySQL Router简介 189
7.1.1 透明路由 189
7.1.2 元数据缓存 190
7.1.3 简单重定向 190
7.1.4 部署与使用 191
7.1.5 MySQL Router 8.0的新特性 192
7.2 Router实现MySQL高可用示例 192
7.2.1 安装和配置 192
7.2.2 自动故障转移 199
7.2.3 负载均衡 202
7.2.4 读写分离 202
7.2.5 多实例 202
7.3 Router 8安装和配置 205
7.3.1 安装 205
7.3.2 启动 206
7.3.3 配置 210
7.4 小结 214
第8章 MySQL Fabric 215
8.1 MySQL Fabric简介 215
8.1.1 MySQL Fabric的用途 215
8.1.2 MySQL Fabric架构 216
8.2 高可用性 218
8.2.1 概述 218
8.2.2 安装与配置 218
8.2.3 HA功能测试 226
8.3 数据分片 232
8.4 MySQL Fabric限制 233
8.5 小结 234
第9章 MMM 235
9.1 MMM简介 235
9.1.1 基本功能 235
9.1.2 工作原理 236
9.1.3 典型用例 237
9.1.4 切换流程 238
9.1.5 系统需求 238
9.2 实现MySQL主主复制的高可用 240
9.2.1 基本环境 240
9.2.2 安装和配置 241
9.2.3 功能测试 244
9.3 小结 248