第1章 MySQL架构介绍 1
1.1 MySQL架构 1
1.1.1 MySQL物理文件的组成 2
1.1.2 MySQL各逻辑块简介 4
1.1.3 MySQL各逻辑块协调工作 6
1.2 MySQL存储引擎概述 7
1.3 MySQL各种存储引擎的特性 10
1.3.1 MyISAM 10
1.3.2 InnoDB 12
1.3.3 MEMORY 15
1.3.4 MERGE 18
1.3.5 BerkeleyDB存储引擎 20
1.4 MySQL工具 21
1.4.1 MySQL命令行实用程序 21
1.4.2 MySQL Workbench 33
1.5 本章小结 34
第2章 MySQL权限与安全 35
2.1 权限表 35
2.1.1 user表 35
2.1.2 db表和host表 37
2.1.3 tables_priv表和columns_riv表 39
2.1.4 procs_riv表 40
2.2 账户管理 41
2.2.1 登录和退出MySQL服务器 41
2.2.2 新建普通用户 43
2.2.3 删除普通用户 47
2.2.4 root用户修改自己的密码 48
2.2.5 root用户修改普通用户密码 50
2.2.6 普通用户修改密码 51
2.2.7 root用户密码丢失的解决办法 51
2.3 权限管理 53
2.3.1 MySQL的各种权限 53
2.3.2 授权 55
2.3.3 收回权限 57
2.3.4 查看权限 58
2.4 访问控制 59
2.4.1 连接核实阶段 59
2.4.2 请求核实阶段 60
2.5 MySQL的安全问题 61
2.5.1 操作系统相关的安全问题 61
2.5.2 数据库相关的安全问题 62
2.6 使用SSL安全连接 71
2.7 综合管理用户权限 77
2.8 小结 80
第3章 数据备份与还原 81
3.1 数据备份 81
3.1.1 使用mysqldump命令备份 81
3.1.2 直接复制整个数据库目录 88
3.1.3 使用mysqlhotcopy工具快速备份 88
3.2 数据还原 89
3.2.1 使用MySQL命令还原 89
3.2.2 直接复制到数据库目录 90
3.2.3 mysqlhotcopy快速恢复 90
3.3 数据库迁移 90
3.3.1 相同版本的MySQL数据库之间的迁移 91
3.3.2 不同版本的MySQL数据库之间的迁移 91
3.3.3 不同数据库之间的迁移 92
3.4 表的导出和导入 92
3.4.1 使用SELECT…INTO OUTFILE导出文本文件 92
3.4.2 用mysqldump命令导出文本文件 95
3.4.3 用MySQL命令导出文本文件 98
3.4.4 使用LOAD DATA INFILE方式导入文本文件 101
3.4.5 使用mysqlimport命令导入文本文件 103
3.5 综合实例——数据的备份与恢复 105
3.6 小结 109
第4章 MySQL的高级特性 110
4.1 MySQL查询缓存 110
4.1.1 认识查询缓存 110
4.1.2 监控和维护查询缓存 115
4.1.3 如何检查缓存命中率 117
4.1.4 优化查询缓存 118
4.2 合并表和分区表 119
4.2.1 合并表 119
4.2.2 分区表 121
4.3 事务控制 131
4.4 MySQL分布式事务 135
4.4.1 了解分布式事务的原理 135
4.4.2 分布式事务的语法 136
4.5 小结 137
第5章 MySQL锁定机制 138
5.1 MySQL锁定机制概述 138
5.2 MyISAM表级锁 143
5.2.1 MyISAM表级锁的锁模式 143
5.2.2 获取MyISAM表级锁的争用情况 145
5.2.3 MyISAM表级锁加锁方法 146
5.2.4 MyISAM Concurrent Insert的特性 148
5.2.5 MyISAM表锁优化建议 150
5.3 InnoDB行级锁 150
5.3.1 InnoDB行级锁模式 150
5.3.2 获取InnoDB行级锁的争用情况 155
5.3.3 InnoDB行级锁的实现方法 157
5.3.4 间隙锁(Net-Key锁) 162
5.3.5 InnoDB在不同隔离级别下加锁的差异 163
5.3.6 InnoDB存储引擎中的死锁 164
5.3.7 InnoDB行级锁优化建议 166
5.4 小结 167
第6章 使用MySQL Workbench管理数据库 168
6.1 MySQL Workbench简介 168
6.1.1 MySQL Workbench的概述 168
6.1.2 MySQL Workbench的优势 169
6.1.3 MySQL Workbench的安装 169
6.2 SQL Development的基本操作 171
6.2.1 创建数据库连接 171
6.2.2 创建新的数据库 173
6.2.3 创建和删除新的数据表 174
6.2.4 添加、修改表记录 177
6.2.5 查询表记录 178
6.2.6 修改表结构 178
6.3 Data Modeling的基本操作 179
6.3.1 建立ER模型 179
6.3.2 导入ER模型 184
6.4 Server Administration的基本操作 185
6.4.1 管理MySQL用户 186
6.4.2 备份MySQL数据库 188
6.4.3 还原MySQL数据库 191
6.5 小结 192
第7章 SQL性能优化 193
7.1 优化简介 193
7.2 MySQL Query Optimizer概述 194
7.3 SQL语句优化的基本思路 194
7.4 利用EXPLAIN分析查询语句 196
7.4.1 EXPLAIN语句的基本语法 196
7.4.2 EXPLAIN语句分析实例 208
7.5 利用Profiling分析查询语句 212
7.6 合理地使用索引 216
7.6.1 索引对查询速度的影响 216
7.6.2 如何使用索引查询 217
7.7 不同类型SQL语句优化方法 220
7.7.1 优化INSERT语句 220
7.7.2 优化ORDER BY语句 221
7.7.3 优化GROUP BY语句 222
7.7.4 优化嵌套查询 223
7.7.5 优化OR条件 224
7.7.6 优化插入记录的速度 226
7.8 优化数据库结构 228
7.8.1 将字段很多的表分解成多个表 228
7.8.2 增加中间表 230
7.8.3 增加冗余字段 231
7.9 分析表、检查表和优化表 232
7.9.1 分析表 232
7.9.2 检查表 233
7.9.3 优化表 233
7.10 小结 234
第8章 MySQL服务器性能优化 235
8.1 MySQL源码安装的性能优化 235
8.2 MySQL服务器配置优化 238
8.2.1 查看性能参数的方法 238
8.2.2 key_ buffer size的设置 243
8.2.3 table cache的设置 246
8.2.4 内存参数的设置 248
8.2.5 日志和事务参数的设置 252
8.2.6 存储和I/O相关参数的设置 253
8.2.7 其他重要参数的设置 254
8.3 MySQL日志设置优化 256
8.4 MySQL I/O设置优化 257
8.5 MySQL并发设置优化 259
8.6 线程、Table Cache和临时表的优化 261
8.6.1 线程的优化 261
8.6.2 关于table cache相关的优化 262
8.6.3 关于临时表的优化 263
8.7 小结 264
第9章 MySQL性能监控 265
9.1 基本监控系统方法 265
9.1.1 ps命令 265
9.1.2 top命令 266
9.1.3 vmstat命令 268
9.1.4 mytop命令 269
9.1.5 sysstat工具 272
9.2 开源监控利器Nagios实战 277
9.2.1 安装Nagios之前的准备工作 277
9.2.2 安装Nagios主程序 279
9.2.3 整合Nagios到Apache服务 280
9.2.4 安装Nagios插件包 284
9.2.5 监控服务器的CPU、负载、磁盘I/O使用情况 286
9.2.6 配置Nagios监控MySQL服务器 291
9.3 MySQL监控利器Cacti实战 293
9.3.1 Cacti工具的安装 294
9.3.2 Cacti监控MySQL服务器 299
9.4 小结 304
第10章 MySQL Replication 305
10.1 MySQL Replication概述 305
10.2 Windows环境下的MySQL主从复制 306
10.2.1 复制前的准备工作 306
10.2.2 Windows环境下实现主从复制 306
10.2.3 Windows环境下主从复制测试 314
10.3 Linux环境下的MySQL复制 315
10.3.1 下载并安装MySQL 5.6 315
10.3.2 单机主从复制前的准备工作 316
10.3.3 mysqld_ multi实现单机主从复制 320
10.3.4 不同服务器之间实现主从复制 328
10.3.5 MySQL主要复制启动选项 329
10.3.6 指定复制的数据库或者表 330
10.4 查看Slave的复制进度 338
10.5 日常管理和维护 339
10.5.1 了解服务器的状态 339
10.5.2 服务器复制出错的原因 340
10.6 切换主从服务器 343
10.7 小结 347
第11章 MySQL Cluster实战 348
11.1 MySQL Cluster概述 348
11.1.1 MySQL Cluster基本概念 348
11.1.2 理解MySQL Cluster节点 349
11.2 Linux环境下MySQL Cluster安装和配置 350
11.2.1 安装MySQL Cluster 7.2.8 软件 352
11.2.2 管理节点配置步骤 357
11.2.3 配置SQL节点和数据节点 358
11.3 管理MySQL Cluster 358
11.3.1 Cluster的启动 358
11.3.2 Cluster的测试 360
11.3.3 Cluster的关闭 363
11.4 维护MySQL Cluster 363
11.4.1 Cluster的日志的管理 366
11.4.2 Cluster的联机备份 367
11.4.3 Cluster的数据恢复 368
11.5 Windows操作系统中配置Cluster 369
11.6 小结 374
第12章 企业中MySQL的高可用架构 375
12.1 MySQL高可用的简单介绍 375
12.2 MySQL主从复制 375
12.2.1 MySQL主从架构设计 376
12.2.2 配置环境 376
12.2.3 服务器的安装配置 376
12.2.4 LVS的安装配置 379
12.3 MySQL+DRBD+HA 381
12.3.1 什么是DRBD 381
12.3.2 MySQL+DRBD+HA架构设计 382
12.3.3 配置环境 382
12.3.4 安装配置Heartbeat 383
12.3.5 安装配置DRBD 385
12.4 Lvs+Keepalived+MySQL单点写入主主同步方案 388
12.4.1 配置环境 388
12.4.2 Lvs+Keepalived的安装 393
12.4.3 Lvs+Keepalived的配置 394
12.4.4 Master和Backup的启动 397
12.5 MMM高可用MySQL方案 397
12.5.1 MMM的架构 398
12.5.2 配置环境 398
12.5.3 MMM的安装 402
12.5.4 Monitor服务器的配置 402
12.5.5 各个数据库服务器的配置 404
12.5.6 MMM的管理 404
12.6 小结 405