内容简介
第一部分 基础篇
1第1章 MySQL的安装与配置
1.1 MySQL的下载
1.1.1在Windows平台下下载MySQL
1.1.2在Linux平台下下载MySQL
1.2 MySQL的安装
1.2.1在Windows平台下安装MySQL
1.2.2在Linux平台下安装MySQL
1.3 MySQL的配置
1.3.1 Windows平台下配置MySQL
1.3.2 Linux平台下配置MySQL
1.4启动和关闭MySQL服务
1.4.1在Windows平台下启动和关闭MySQL服务
1.4.2在Linux平台下启动和关闭MySQL服务
1.5小结
2第2章 SQL基础
2.1 SQL简介
2.2 (My)SQL使用入门
2.2.1 SQL分类
2.2.2 DDL语句
2.2.3 DML语句
2.2.4 DCL语句
2.3帮助的使用
2.3.1按照层次看帮助
2.3.2快速查阅帮助
2.3.3常用的网络资源
2.4查询元数据信息
2.5小结
3第3章 MySQL支持的数据类型
3.1数值类型
3.2日期时间类型
3.3字符串类型
3.3.1 CHAR和VARCHAR类
3.3.2 BINARY和VARBINARY类型
3.3.3 ENUM类型
3.3.4 SET类型
3.4小结
4第4章 MySQL中的运算符
4.1算术运算符
4.2比较运算符
4.3逻辑运算符
4.4位运算符
4.5运算符的优先级
4.6小结
5第5章 常用函数
5.1字符串函数
5.2数值函数
5.3日期和时间函数
5.4流程函数
5.5其他常用函数
5.6小结
6第6章 图形化工具的使用
6.1 MySQL Workbench
6.1.1 SQL开发
6.1.2数据建模
6.1.3服务器管理
6.1.4 MySQL Utilities
6.2 phpMyAdmin
6.2.1数据库管理
6.2.2数据库对象管理
6.2.3权限管理
6.2.4导入导出数据
6.3小结
第二部分 开发篇
7第7章 表类型(存储引擎)的选择
7.1 MySQL存储引擎概述
7.2各种存储引擎的特性
7.2.1 MyISAM
7.2.2 InnoDB
7.2.3 MEMORY
7.2.4 MERGE
7.2.5 TokuDB
7.3如何选择合适的存储引擎
7.4小结
8第8章 选择合适的数据类型
8.1 CHAR与VARCHAR
8.2 TEXT与BLOB
8.3浮点数与定点数
8.4日期类型选择
8.5小结
9第9章 字符集
9.1字符集概述
9.2 Unicode简述
9.3汉字及一些常见字符集
9.4怎样选择合适的字符集
9.5 MySQL支持的字符集简介
9.6 MySQL字符集的设置
9.6.1服务器字符集和校对规则
9.6.2数据库字符集和校对规则
9.6.3表字符集和校对规则
9.6.4列字符集和校对规则
9.6.5连接字符集和校对规则
9.7字符集的修改步骤
9.8小结
10第10章 索引的设计和使用
10.1索引概述
10.2设计索引的原则
10.3 BTREE索引与HASH索引
10.4小结
11第11章 视图
11.1什么是视图
11.2视图操作
11.2.1创建或者修改视图
11.2.2删除视图
11.2.3查看视图
11.3小结
12第12章 存储过程和函数
12.1什么是存储过程和函数
12.2存储过程和函数的相关操作
12.2.1创建、修改存储过程或者函数
12.2.2删除存储过程或者函数
12.2.3查看存储过程或者函数
12.2.4变量的使用
12.2.5定义条件和处理
12.2.6光标的使用
12.2.7流程控制
12.2.8事件调度器
12.3小结
13第13章 触发器
13.1创建触发器
13.2删除触发器
13.3查看触发器
13.4触发器的使用
13.5小结
14第14章 事务控制和锁定语句
14.1 LOCK TABLE和UNLOCK TABLE
14.2事务控制
14.3分布式事务的使用
14.3.1分布式事务的原理
14.3.2分布式事务的语法
14.3.3存在的问题
14.4小结
15第15章 SQL中的安全问题
15.1 SQL注入简介
15.2应用开发中可以采取的应对措施
15.2.1 PrepareStatement+Bind-Variable
15.2.2使用应用程序提供的转换函数
15.2.3自己定义函数进行校验
15.3小结
16第16章 SQL Mode及相关问题
16.1 MySQL SQL Mode简介
16.2 SQL Mode的常见功能
16.3常用的SQL Mode
16.4 SQL Mode在迁移中如何使用
16.5小结
17第17章 MySQL分区
17.1分区概述
17.2分区类型
17.2.1 Range分区
17.2.2 List分区
17.2.3 Columns分区
17.2.4 Hash分区
17.2.5 Key分区
17.2.6子分区
17.2.7 MySQL分区处理NULL值的方式
17.3分区管理
17.3.1 RANGE&LIST分区管理
17.3.2 HASH&KEY分区管理
17.4小结
第三部分 优化篇
18第18章 SQL优化
18.1优化SQL语句的一般步骤
18.1.1通过show status命令了解各种SQL的执行频率
18.1.2定位执行效率较低的SQL语句
18.1.3通过EXPLAIN分析低效SQL的执行计划
18.1.4通过show profile分析SQL
18.1.5通过trace分析优化器如何选择执行计划
18.1.6确定问题并采取相应的优化措施
18.2索引问题
18.2.1索引的存储分类
18.2.2 MySQL如何使用索引
18.2.3查看索引使用情况
18.3两个简单实用的优化方法
18.3.1定期分析表和检查表
18.3.2定期优化表
18.4常用SQL的优化
18.4.1大批量插入数据
18.4.2优化INSERT语句
18.4.3优化ORDER BY语句
18.4.4优化GROUPBY语句
18.4.5优化嵌套查询
18.4.6 MySQL如何优化OR条件
18.4.7优化分页查询
18.4.8使用SQL提示
18.5常用SQL技巧
18.5.1正则表达式的使用
18.5.2巧用RANDQ提取随机行
18.5.3利用GROUP BY的WITH ROLLUP子句
18.5.4用BIT GROUP FUNCT IONS做统计
18.5.5数据库名、表名大小写问题
18.5.6使用外键需要注意的问题
18.6小结
19第19章 优化数据库对象
19.1优化表的数据类型
19.2通过拆分提高表的访问效率
19.3逆规范化
19.4使用中间表提高统计查询速度
19.5小结
20第20章 锁问题
20.1 MySQL锁概述
20.2 MyISAM表锁
20.2.1查询表级锁争用情况
20.2.2 MySQL表级锁的锁模式
20.2.3如何加表锁
20.2.4并发插入(Concurrent Inserts)
20.2.5 MyISAM的锁调度
20.3 InnoDB锁问题
20.3.1背景知识
20.3.2获取InnoDB行锁争用情况
20.3.3 InnoDB的行锁模式及加锁方法
20.3.4 InnoDB行锁实现方式
20.3.5 Next-Key锁
20.3.6恢复和复制的需要,对InnoDB锁机制的影响
20.3.7 InnoDB在不同隔离级别下的一致性读及锁的差异
20.3.8什么时候使用表锁
20.3.9关于死锁
20.4小结
21第21章 优化MySQL Server
21.1 MySQL体系结构概览
21.2 MySQL内存管理及优化
21.2.1内存优化原则
21.2.2 MyISAM内存优化
21.2.3 InnoDB内存优化
21.2.4调整用户服务线程排序缓存区
21.2 InnoDB log机制及优化
21.3.1 InnoDB重做日志
21.3.2 innodb_flush_log_at_trx_commit的设置
21.3.3设置log le size,控制检查点
21.3.4调整innodb_log_buffer_size
21.2调整MySQL并发相关的参数
21.4.1调整max_connections,提高并发连接
21.4.2调整back_log
21.4.3调整table_open_cache
21.4.4调整thread_cache_size
21.4.5 innodb lock wait timeout的设置
21.5小结
22第22章 磁盘I/O问题
22.1使用磁盘阵列
22.1.1常见RAID级别及其特性
22.1.2如何选择RAID级别
22.2虚拟文件卷或软RAID
22.3使用Symbolic Links分布I/O
22.4禁止操作系统更新文件的atime属性
22.5用裸设备(Raw Device)存放InnoDB的共享表空间
22.6调整I/O调度算法
22.7 RAID卡电池充放电问题
22.7.1什么是RAID卡电池充放电
22.7.2 RAID卡缓存策略
22.7.3如何应对RAID卡电池充放电带来的I/O性能波动
22.8 NUMA架构优化
22.9小结
23第23章 应用优化
23.1使用连接池
23.2减少对MySQL的访问
23.2.1避免对同一数据做重复检索
23.2.2使用查询缓存
23.2.3增加CACHE层
23.3负载均衡
23.3.1利用MySQL复制分流查询操作
23.3.2采用分布式数据库架构
23.4其他优化措施
23.5小结
第四部分 管理维护篇
24第24章 MySQL高级安装和升级
24.1 Linux/UNIX平台下的安装
24.1.1安装包比较
24.1.2安装RPM包
24.1.3安装二进制包
24.1.4安装源码包
24.1.5参数设置方法
24.2源码包安装的性能考虑
24.2.1去掉不需要的模块
24.2.2只选择要使用的字符集
24.2.3使用静态编译以提高性能
24.3升级MySQL
24.4 MySQL降级
24.5小结
25第25章 MySQL中的常用工具
25.1 mysql(客户端连接工具)
25.1.1连接选项
25.1.2客户端字符集选项
25.1.3执行选项
25.1.4格式化选项
25.1.5错误处理选项
25.2 myisampack(MyISAM表压缩工具)
25.3 mysqladmin(MySQL管理工具)
25.4 mysqlbinlog(日志管理工具)
25.5 mysqlcheck(MyISAM表维护工具)
25.6 mysqldump(数据导出工具)
25.6.1连接选项
25.6.2输出内容选项
25.6.3输出格式选项
25.6.4字符集选项
25.6.5其他常用选项
25.7 mysqlhotcopy(MyISAM表热备份工具)
25.8 mysqlimport(数据导入工具)
25.9 mysqlshow(数据库对象查看工具)
25.10 perror(错误代码查看工具)
25.11 replace(文本替换工具)
25.12小结
26第26章 MySQL日志
26.1错误日志
26.2二进制日志
26.2.1日志的位置和格式
26.2.2日志的读取
26.2.3日志的删除
26.2.4其他选项
26.3查询日志
26.3.1日志的位置和格式
26.3.2日志的读取
26.4慢查询日志
26.4.1文件位置和格式
26.4.2日志的读取
26.5 mysqlsla简介
26.6小结
27第27章 备份与恢复
27.1备份/恢复策略
27.2逻辑备份和恢复
27.2.1备份
27.2.2完全恢复
27.2.3基于时间点恢复
27.2.4基于位置恢复
27.3物理备份和恢复
27.3.1冷备份
27.3.2热备份
27.4表的导入导出
27.4.1导出
27.4.2导入
27.5小结
28第28章 MySQL权限与安全
28.1 MySQL权限管理
28.1.1权限系统的工作原理
28.1.2权限表的存取
28.1.3账号管理
28.2 MySQL安全问题
28.2.1操作系统相关的安全问题
28.2.2数据库相关的安全问题
28.3其他安全设置选项
28.3.1 old-passwords
28.3.2 safe-user-create
28.3.3 secure-auth
28.3.4 skip-grant-tables
28.3.5 skip-network
28.3.6 skip-show-database
28.4小结
29第29章 MySQL监控
29.1如何选择一个监控方案
29.1.1选择何种监控方式
29.1.2如何选择适合自己的监控工具
29.2常用网络监控工具
29.2.1 Cacti简介
29.2.2 Nagios简介
29.2.3 Zabbix简介
29.2.4 几种常见开源软件比较
29.3 Zabbit部署
29.3.1 Zabbix Server软件安装
29.3.2 Zabbix Server配置与启动
29.3.3 配置Zabbix Web服务端
29.3.4 ZabbixAgent安装和配置
29.3.5 MPM插件介绍和部署
29.3.6 Zabbix Web端操作
29.4小结
30第30章 MySQL常见问题和应用技巧
30.1忘记MySQL的root密码
30.2如何处理MyISAM存储引擎的表损坏
30.2.1方法一:使用myisamchk工具
30.2.2方法二:使用SQL命令
30.3 MyISAM表超过4GB无法访问的问题
30.4数据目录磁盘空间不足的问题
30.4.1对于MyISAM存储引擎的表
30.4.2对于InnoDB存储引擎的表
30.5 DNS反向解析的问题
30.6 mysql.sock丢失后如何连接数据库
30.7同一台服务器运行多个MySQL数据库
30.8客户端怎么访问内网数据库
30.8.1方法一:使用SecureCRT客户端工具
30.8.2方法二:使用MySQL Proxy工具
30.9小结
第五部分 架构篇
31第31章 MySQL复制
31.1复制概述
31.1.1复制中的各类文件
31.1.2三种复制方式
31.1.3复制的3种常见架构
31.2复制搭建过程
31.2.1异步复制
31.2.2半同步复制(Semi-synchronous Replication)
31.3主要复制启动选项
31.3.1 log-slave-updates
31.3.2 master-connect-retry
31.3.3 read-only
31.3.4指定复制的数据库或者表
31.3.5 slave-skip-errors
31.4日常管理维护
31.4.1查看从库状态
31.4.2主从库同步维护
31.4.3从库复制出错的处理
31.4.4 log event entry exceeded max_allowed_packet的处理
31.4.5多主复制时的自增长变量冲突问题
31.4.6查看从库的复制进度
31.4.7如何提高复制的性能
31.5切换主从库
31.6小结
32第32章 MySQL Cluster
32.1 MySQL Cluster架构
32.2 MySQL Cluster的配置
32.2.1 MySQL Cluster的版本支持
32.2.2管理节点配置步骤
32.2.3 SQL节点和数据节点的配置
32.3开始使用Cluster
32.3.1 Cluster的启动
32.3.2 Cluster的测试
32.3.3 Cluster的关闭
32.4维护Cluster
32.4.1数据备份
32.4.2数据恢复
32.4.3日志管理
32.5小结
33第33章 高可用架构
33.1 MMM架构
33.2 MHA架构
33.3安装部署MHA
33.3.1安装MHA node(在所有的MySQL服务器上安装)
33.3.2安装MHA Manager
33.3.3配置SSH登录无密码验证
33.3.4搭建主从复制环境
33.3.5配置MHA
33.3.6检查SSH的配置
33.3.7检查整个复制环境状况
33.3.8检查MHA Manager的状态
33.3.9开启MHA Manager监控
33.3.10查看启动日志
33.3.11关闭MHA Manager监控
33.3.12 VIP配置
33.3.13自动Failover
33.3.14网络问题触发的Failover操作
33.3.15手动Failover
33.3.16在线进行切换
33.3.17修复宕机的Master
33.4小结