部分 基础篇
章 MySQL的安装与配置2
1.1MySQL的下载2
1.1.1在Windows平台下下载MySQL3
1.1.2在Linux平台下下载MySQL3
1.2MySQL的安装5
1.2.1在Windows平台下安装MySQL5
1.2.2在Linux平台下安装MySQL8
1.3MySQL的配置12
1.3.1Windows平台下配置MySQL12
1.3.2Linux平台下配置MySQL13
1.4启动和关闭MySQL服务13
1.4.1在Windows平台下启动和关闭MySQL服务13
1.4.2在Linux平台下启动和关闭MySQL服务13
1.5小结14
第2章 SQL基础15
2.1SQL简介15
2.2(My)SQL使用入门15
2.2.1SQL分类15
2.2.2DDL语句16
2.2.3DML语句23
2.2.4DCL语句33
2.3帮助的使用34
2.3.1按照层次看帮助34
2.3.2快速查阅帮助35
2.4查询元数据信息36
2.5小结37
第3章MySQL支持的数据类型38
3.1数值类型38
3.2日期时间类型43
3.3字符串类型49
3.3.1CHAR和VARCHAR类型50
3.3.2BINARY和VARBINARY类型51
3.3.3ENUM类型51
3.3.4SET类型52
3.4JSON类型52
3.5小结54
第4章MySQL中的运算符55
4.1算术运算符55
4.2比较运算符56
4.3逻辑运算符59
4.4位运算符60
4.5运算符的优先级61
4.6小结62
第5章常用函数63
5.1字符串函数63
5.2数值函数66
5.3日期和时间函数68
5.4流程函数71
5.5JSON函数73
5.5.1创建JSON函数74
5.5.2查询JSON函数75
5.5.3修改JSON的函数79
5.5.4查询JSON元数据函数81
5.5.5JSON工具函数83
5.6窗口函数86
5.6.1ROW_NUMBER()87
5.6.2RANK()/DENSE_RANK()89
5.6.3PERCENT_RANK()/CUME_DIST()89
5.6.4NFILE(N)90
5.6.5NTH_VALUE(expr,N)91
5.6.6LAG(expr,N)/LEAD(expr,N)91
5.6.7FIRST_VALUE(expr)/LAST_VALUE(expr)92
5.6.8聚合函数作为窗口函数93
5.7其他常用函数93
5.8小结95
第二部分开发篇
第6章表类型(存储引擎)的选择98
6.1MySQL存储引擎概述98
6.2各种存储引擎的特性100
6.2.1MyISAM101
6.2.2InnoDB102
6.2.3MEMORY108
6.2.4MERGE109
6.2.5TokuDB111
6.3如何选择合适的存储引擎112
6.4小结113
第7章选择合适的数据类型114
7.1CHAR与VARCHAR114
7.2TEXT与BLOB115
7.3浮点数与定点数118
7.4日期类型选择120
7.5小结120
第8章字符集121
8.1字符集概述121
8.2Unicode简述121
8.3汉字及一些常见字符集123
8.4怎样选择合适的字符集124
8.5MySQL支持的字符集简介125
8.6MySQL字符集的设置126
8.6.1服务器字符集和排序规则126
8.6.2数据库字符集和排序规则127
8.6.3表字符集和排序规则127
8.6.4列字符集和排序规则128
8.6.5连接字符集和排序规则128
8.7字符集的修改步骤129
8.8小结129
第9章索引的设计和使用130
9.1索引概述130
9.2设计索引的原则131
9.3索引设计的误区132
9.4索引设计的一般步骤132
9.5BTREE索引与HASH索引133
9.6索引在MySQL 8.0中的改进134
9.6.1不可见索引134
9.6.2倒序索引135
9.7小结136
0章 开发常用数据库对象137
10.1视图137
10.1.1什么是视图137
10.1.2视图操作137
10.1.3创建或者修改视图137
10.1.4删除视图139
10.1.5查看视图139
10.2存储过程和函数140
10.2.1什么是存储过程和函数141
10.2.2存储过程和函数的相关操作141
10.2.3创建、修改存储过程或者函数141
10.2.4删除存储过程或者函数144
10.2.5查看存储过程或者函数144
10.2.6变量的使用146
10.2.7定义条件和处理146
10.2.8光标的使用148
10.2.9流程控制149
10.2.10事件调度器152
10.3触发器155
10.3.1创建触发器155
10.3.2删除触发器157
10.3.3查看触发器157
10.3.4触发器的使用158
10.4小结159
1章 事务控制和锁定语句160
11.1LOCK TABLES和UNLOCK TABLES160
11.2事务控制161
11.3分布式事务的使用166
11.3.1分布式事务的原理166
11.3.2分布式事务的语法166
11.3.3存在的问题168
11.4小结171
2章 SQL中的安全问题172
12.1SQL注入简介172
12.2应用开发中可以采取的应对措施173
12.2.1PrepareStatement+Bind-Variable173
12.2.2使用应用程序提供的转换函数174
12.2.3自己定义函数进行校验174
12.3小结175
3章 SQL Mode及相关问题176
13.1MySQL SQL Mode简介176
13.2SQL Mode的常见功能178
13.3常用的SQL Mode180
13.4SQL Mode在迁移中如何使用182
13.5小结183
4章 MySQL分区184
14.1分区概述184
14.2分区类型185
14.2.1RANGE分区187
14.2.2LIST 分区188
14.2.3COLUMNS 分区189
14.2.4HASH分区192
14.2.5KEY分区195
14.2.6子分区196
14.2.7MySQL分区处理NULL值的方式197
14.3分区管理199
14.3.1RANGE与LIST分区管理199
14.3.2HASH与KEY分区管理205
14.3.3交换分区206
14.4小结208
第三部分优化篇
5章 SQL优化210
15.1优化SQL语句的一般步骤210
15.1.1通过show status命令了解各种SQL的执行频率210
15.1.2定位执行效率较低的SQL语句211
15.1.3通过EXPLAIN分析低效SQL的执行计划211
15.1.4通过show profile分析SQL216
15.1.5通过trace分析优化器如何选择执行计划219
15.1.6确定问题并采取相应的优化措施220
15.2索引问题220
15.2.1索引的存储分类220
15.2.2MySQL如何使用索引222
15.2.3查看索引使用情况231
15.3简单实用的优化方法231
15.3.1定期分析表和检查表232
15.3.2定期优化表233
15.4常用SQL的优化233
15.4.1大批量插入数据234
15.4.2优化INSERT语句235
15.4.3优化ORDER BY语句235
15.4.4优化GROUP BY语句239
15.4.5优化JOIN操作239
15.4.6优化嵌套查询243
15.4.7MySQL如何优化OR条件245
15.4.8优化分页查询246
15.4.9使用SQL提示248
15.5直方图250
15.5.1什么是直方图250
15.5.2直方图的分类251
15.5.3直方图实例应用252
15.5.4直方图小结256
15.6使用查询重写256
15.7常用SQL技巧259
15.7.1正则表达式的使用259
15.7.2巧用RAND()提取随机行261
15.7.3利用GROUP BY的WITH ROLLUP子句262
15.7.4用BIT GROUP FUNCTIONS做统计263
15.7.5数据库名、表名大小写问题265
15.7.6使用外键需要注意的问题265
15.8小结266
6章 锁问题267
16.1MySQL锁概述267
16.2MyISAM表锁268
16.2.1查询表级锁争用情况268
16.2.2MySQL表级锁的锁模式268
16.2.3如何加表锁269
16.2.4并发插入(Concurrent Inserts)271
16.2.5MyISAM的锁调度272
16.3InnoDB锁问题273
16.3.1背景知识273
16.3.2获取InnoDB行锁争用情况275
16.3.3InnoDB的行锁模式及加锁方法276
16.3.4InnoDB行锁实现方式279
16.3.5Next-Key锁283
16.3.6恢复和复制的需要,对InnoDB锁机制的影响284
16.3.7InnoDB在不同隔离级别下的一致性读及锁的差异287
16.3.8什么时候使用表锁288
16.3.9关于死锁289
16.4小结294
7章 优化MySQL Server296
17.1MySQL体系结构概览296
17.2MySQL内存管理及优化298
17.2.1内存优化原则298
17.2.2MyISAM内存优化298
17.2.3InnoDB内存优化301
17.2.4调整用户服务线程排序缓存区305
17.3InnoDB log机制及优化305
17.3.1InnoDB重做日志305
17.3.2innodb_flush_log_at_trx_commit的设置306
17.3.3设置log file size,控制检查点307
17.3.4调整innodb_log_buffer_size308
17.4调整MySQL并发相关的参数308
17.4.1调整max_connections,提高并发连接308
17.4.2调整back_log309
17.4.3调整table_open_cache309
17.4.4调整thread_cache_size309
17.4.5innodb_lock_wait_timeout的设置309
17.5持久化全局变量309
17.6使用资源组310
17.7小结312
8章 磁盘I/O问题313
18.1使用固态硬盘313
18.2使用磁盘阵列314
18.2.1常见RAID级别及其特性314
18.2.2如何选择RAID级别315
18.3虚拟文件卷或软RAID315
18.4使用Symbolic Links分布I/O315
18.5禁止操作系统更新文件的atime属性316
18.6调整I/O调度算法316
18.7RAID卡电池充放电问题318
18.7.1什么是RAID卡电池充放电318
18.7.2RAID卡缓存策略319
18.7.3如何应对RAID卡电池充放电带来的I/O性能波动321
18.8NUMA架构优化322
18.9小结325
9章 应用优化326
19.1优化数据表的设计326
19.1.1优化表的数据类型326
19.1.2通过拆分提高表的访问效率328
19.1.3逆规范化329
19.2数据库应用优化330
19.2.1使用连接池330
19.2.2减少对MySQL的访问330
19.2.3负载均衡331
19.3小结331
第20章 PS/SYS数据库332
20.1Performance Schema库332
20.1.1如何开启PS库332
20.1.2PS库的表333
20.2SYS 库335
20.2.1SYS库的对象335
20.2.2SYS对象的实际应用336
20.3小结340
第21章 故障诊断341
21.1故障诊断和处理的原则341
21.2故障处理一般流程343
21.2.1故障发现343
21.2.2故障定位345
21.2.3故障解决346
21.3典型故障案例349
21.3.1案例1349
21.3.2案例2353
21.4小结356
第四部分管理维护篇
第22章 MySQL不错安装和升级358
22.1Linux/UNIX平台下的安装358
22.1.1安装包比较358
22.1.2安装二进制包359
22.1.3安装源码包359
22.1.4参数设置方法360
22.2升级MySQL361
22.3小结363
第23章 MySQL中的常用工具364
23.1MySQL官方工具364
23.1.1mysql(客户端连接工具)364
23.1.2mysqladmin(MySQL管理工具)371
23.1.3mysqlbinlog(日志管理工具)371
23.1.4mysqlcheck(表维护工具)378
23.1.5mysqldump(数据导出工具)380
23.1.6mysqlpump(并行的数据导出工具)384
23.1.7mysqlimport(数据导入工具)385
23.1.8mysqlshow(数据库对象查看工具)385
23.1.9perror(错误代码查看工具)387
23.1.10MySQL Shell387
23.2Percona工具包390
23.2.1pt-archiver(数据归档工具)391
23.2.2pt-config-diff(参数对比工具)393
23.2.3pt-duplicate-key-checker(检查冗余索引工具)394
23.2.4pt-find(查找工具)395
23.2.5pt-heartbeat(监控主从延迟工具)395
23.2.6pt-kill(杀死会话工具)397
23.2.7pt-online-schema-change(在线修改表结构工具)397
23.2.8pt-query-digest(SQL分析工具)399
23.2.9pt-table-checksum(数据检验工具)401
23.2.10pt-table-sync(数据同步工具)402
23.3小结403
第24章 MySQL日志404
24.1错误日志404
24.2二进制日志405
24.2.1日志的位置和格式405
24.2.2日志的读取406
24.2.3日志的删除407
24.2.4日志的事件411
24.2.5日志闪回412
24.3查询日志415
24.3.1日志的位置和格式415
24.3.2日志的读取416
24.4慢查询日志416
24.4.1文件位置和格式416
24.4.2日志的读取417
24.4.3Anemometer简介419
24.5小结421
第25章 备份与恢复422
25.1备份/恢复策略422
25.2逻辑备份和恢复422
25.2.1备份423
25.2.2完全恢复425
25.2.3基于时间点恢复427
25.2.4基于位置恢复427
25.2.5并行恢复427
25.3物理备份和恢复428
25.3.1冷备份和热备份428
25.3.2MyISAM存储引擎的热备份429
25.3.3InnoDB存储引擎的热备份429
25.4表的导入和导出438
25.4.1导出438
25.4.2导入442
25.5小结445
第26章 MySQL权限与安全446
26.1MySQL权限管理446
26.1.1权限系统的工作原理446
26.1.2权限表的存取446
26.1.3账号管理449
26.2MySQL安全问题461
26.2.1操作系统相关的安全问题461
26.2.2数据库相关的安全问题463
26.3其他安全设置选项471
26.3.1密码插件471
26.3.2safe-user-create472
26.3.3表空间加密473
26.3.4skip-grant-tables474
26.3.5skip-networking474
26.3.6skip-show-database475
26.4小结475
第27章 MySQL监控476
27.1如何选择一个监控方案476
27.1.1选择何种监控方式476
27.1.2如何选择适合自己的监控工具477
27.2常用的网络监控工具477
27.2.1Open-Falcon简介477
27.2.2Nagios简介479
27.2.3Zabbix简介480
27.2.4几种常见开源软件比较481
27.3Zabbix 部署481
27.3.1Zabbix Server482
27.3.2Zabbix Server配置与启动482
27.3.3配置Zabbix Web服务端483
27.3.4Zabbix Agent安装和配置485
27.3.5PMP插件介绍和部署486
27.3.6Zabbix Web端操作489
27.4性能医生orzdba491
27.4.1orzdba安装491
27.4.2orzdba使用492
27.5小结492
第28章 MySQL常见问题和应用技巧493
28.1忘记MySQL的root密码493
28.2数据目录磁盘空间不足的问题494
28.3mysql.sock丢失后如何连接数据库495
28.4从mysqldump文件抽取需要恢复的表496
28.5使用innobackupex备份恢复单表497
28.6分析BINLOG,找出写的热点表498
28.7在线DDL499
28.8小结502
第29章 自动化运维系统的开发503
29.1MySQL自动化运维背景503
29.2CMDB系统搭建504
29.2.1CMDB数据库504
29.2.2批量管理系统505
29.2.3后台API511
29.3任务调度系统515
29.3.1Celery安装515
29.3.2Celery任务部署516
29.3.3Flower监控518
29.4客户端搭建519
29.4.1Vue.js简介519
29.4.2Vue项目搭建520
29.5自动化运维平台实战525
29.5.1搭建CMDB525
29.5.2搭建任务调度平台528
29.5.3搭建客户端529
29.5.4项目演示532
29.6小结532
第五部分架构篇
第30章MySQL复制534
30.1复制概述534
30.1.1复制中的各类文件536
30.1.23种复制方式537
30.1.3复制的4种常见架构540
30.2复制搭建543
30.2.1异步复制543
30.2.2多线程复制547
30.2.3增强半同步复制553
30.3GTID(Global Transaction Identifier)558
30.3.1格式与存储558
30.3.2gtid_purged561
30.3.3复制搭建565
30.3.4主从切换571
30.3.5常见问题572
30.4主要复制启动选项576
30.4.1log-slave-updates576
30.4.2read-only/super_read_only576
30.4.3指定复制的数据库或者表577
30.4.4slave-skip-errors579
30.5日常管理维护579
30.5.1查看从库复制状态和进度579
30.5.2主从复制问题集锦580
30.5.3多主复制时的自增长变量冲突问题582
30.5.4如何提高复制的性能584
30.6小结588
第31章高可用架构589
31.1MHA架构589
31.1.1安装部署MHA591
31.1.2应用连接配置598
31.1.3自动failover605
31.1.4网络问题触发的failover操作614
31.1.5手动failover614
31.1.6在线进行切换615
31.1.7修复宕掉的Master617
31.2MGR架构617
31.2.1安装部署MGR618
31.2.2监控625
31.2.3primary成员切换626
31.2.4重要特性628
31.2.5常见问题629
31.3InnoDB Cluster636
31.3.1安装部署637
31.3.2初始化MySQL Router642
31.3.3集群Metadata643
31.3.4集群成员角色切换644
31.3.5集群删除/增加节点646
31.3.6重新加入节点648
31.4小结649
第32章MySQL中间件650
32.1MySQL Router650
32.1.1MySQL Router的安装651
32.1.2MySQL Router的初始化653
32.1.3MySQL Router策略验证656
32.2Cetus架构658
32.2.1Cetus的安装配置659
32.2.2Cetus的使用670
32.2.3Cetus日志文件674
32.2.4Cetus的后端管理675
32.2.5Cetus的路由策略678
32.2.6常见问题681
32.3小结682
· · · · · · (
收起)