第1部分 高可用性和可扩展性 2
第1章 引言 2
到底什么是复制 4
那么,是否需要备份 5
什么是监控 6
其他阅读材料 6
小结 7
第2章 MySQL Replicant库 8
基本类和函数 12
对各种操作系统的支持 13
服务器 13
服务器角色 15
小结 17
第3章 MySQL复制原理 18
复制的基本步骤 19
配置master 20
配置slave 21
连接master和slave 22
二进制日志简介 23
二进制日志记录了什么 24
观察复制的动作 25
二进制日志的结构和内容 27
建立新slave 30
克隆master 31
克隆slave 33
克隆操作的脚本 35
执行常见的复制任务 37
报表 37
小结 43
第4章 二进制日志 45
二进制日志的结构 46
binlog事件的结构 48
事件校验 50
将语句写入日志 51
写入DML语句 52
写入DDL语句 52
写入查询 52
LOAD DATA INFILE语句 58
二进制日志过滤器 60
触发器、事件和存储例程 62
存储过程 68
存储函数 70
事件 74
特殊结构 75
非事务型变更和错误处理 75
将事务写入日志 78
使用XA进行分布式事务处理 83
二进制日志的组提交 86
基于行的复制 88
启用基于行的复制 89
使用混合模式 90
二进制日志管理 90
二进制日志和系统崩溃安全 91
binlog文件轮换 92
事故 94
清除binlog文件 94
mysqlbinlog实用工具 95
基本用法 96
解释事件 104
二进制日志的选项和变量 108
基于行的复制参数 110
小结 111
第5章 面向高可用性的复制 112
冗余 113
计划 114
slave故障 115
master故障 115
relay故障 116
灾难恢复 116
方法 116
热备份 118
双主结构 122
提升slave 131
环形复制 135
小结 137
第6章 面向横向扩展的MySQL复制 138
横向扩展读操作,而不是写操作 140
异步复制的价值 141
管理复制拓扑 142
应用层的负载均衡 145
级联复制 153
配置relay 154
使用Python添加relay 155
专用slave 156
过滤复制事件 157
使用过滤将事件分配给slave 159
数据的一致性管理 160
非级联部署的一致性 161
级联部署的一致性 163
小结 169
第7章 数据分片 171
什么是数据分片 172
为什么要分片 173
分片的局限性 174
分片方案的要素 176
高级分片架构 177
数据分区 178
分配分片 182
映射分片关键字 186
分片方案 186
分片映射函数 190
处理查询和事务调度 194
处理事务 195
分配查询 197
分片管理 199
将分片迁移到其他节点 199
分割分片 203
小结 203
第8章 深入复制 204
复制架构基础 205
中继日志的结构 206
复制线程 209
启动和停止slave线程 210
通过Internet运行复制 211
使用内置支持建立安全复制 212
使用Stunnel建立安全复制 213
细粒度控制复制 215
关于复制状态的信息 215
处理断开连接的选项 223
slave如何处理事件 224
管理I/O线程 224
SQL线程的处理 225
半同步复制 231
配置半同步复制 232
监控半同步复制 234
全局事务标识符 234
使用GTID配置复制 235
使用GTID进行故障转移 237
使用GTID提升slave 238
GTID的复制 240
slave的安全和恢复 242
同步、事务以及数据库崩溃问题 242
事务型复制 244
保护非事务型语句的规则 248
多源复制 248
基于行的复制的细节 251
Table_map事件 253
行事件的结构 255
行事件的执行 256
事件和触发器 257
基于行的复制中的过滤 259
部分行复制 260
小结 261
第9章 MySQL集群 263
什么是MySQL集群 264
术语和组件 264
MySQL集群和MySQL有何不同 265
典型配置 265
MySQL集群的特点 266
本地和全局冗余 268
日志处理 268
冗余和分布式数据 269
MySQL集群的架构 269
如何存储数据 271
分区 274
事务管理 275
联机操作 275
配置实例 276
入门 277
启动MySQL集群 279
测试集群 283
关闭集群 284
获得高可用性 284
系统恢复 287
节点恢复 288
复制 289
获得高性能 293
高性能的注意事项 294
高性能的最佳实践 295
小结 297
第2部分 监控和管理 300
第10章 监控入门 300
监控方法 301
监控的好处 301
监控系统组件 302
处理器 302
内存 304
磁盘 304
网络子系统 306
监控方案 306
Linux和UNIX监控 307
进程活动 308
内存利用率 312
磁盘利用率 314
网络活动 317
常见系统统计信息 318
使用cron自动监控 319
Mac OS X监控 320
System Profiler 320
控制台 322
Activity Monitor 324
Microsoft Windows监控 327
Windows体验 327
系统健康报告 329
事件查看器 331
可靠性监视器 333
任务管理器 334
性能监视器 335
预防性维护监控 337
小结 337
第11章 监控MySQL 339
什么是性能 340
MySQL服务器监控 340
如何显示MySQL性能 341
性能监控 342
SQL命令 342
mysqladmin实用工具 348
MySQL工作台 350
第三方工具 360
MySQL基准测试套件 362
服务器日志 364
性能模式 366
概念 367
入门 369
使用性能模式诊断性能问题 377
MySQL的监控分类 378
数据库性能 380
衡量数据库的性能 380
数据库优化的最佳实践 392
提高性能的最佳实践 400
一切都很慢 400
查询慢 400
应用慢 401
复制慢 401
小结 401
第12章 监控存储引擎 403
InnoDB 403
使用SHOW ENGINE命令 406
使用InnoDB监视器 409
监控日志文件 413
监控缓冲池 414
监控表空间 416
使用INFORMATION SCHEMA表 417
使用PERFORMANCE SCHEMA表 418
其他需要考虑的参数 419
InnoDB故障排除的技巧 420
MyISAM 422
优化磁盘存储 423
修复表 423
使用MyISAM实用工具 424
按索引顺序存储表 425
压缩表 426
对数据表进行碎片整理 426
监控key cache 426
预加载key cache 427
使用多个key cache 428
其他需要考虑的参数 429
小结 430
第13章 监控复制 432
入门 432
服务器设置 433
包容性和排他性复制 433
复制线程 435
监控master 437
master的监控命令 437
master的状态变量 441
监控slave 441
slave的监控命令 442
slave的状态变量 446
使用MySQL工作台监控复制 447
其他需要考虑的问题 449
网络 449
监控和管理slave滞后 450
slave滞后的原因和预防措施 450
使用GTID 452
小结 453
第14章 复制的故障排除 454
哪里出错了 455
master上的问题 455
master崩溃及Memory表被占用 455
master崩溃及二进制日志事件丢失 456
master上查询正常但在slave上出错 457
崩溃之后表损坏 458
master上的二进制日志损坏 459
杀死非事务型表上长时间运行的查询 459
不安全的语句 460
slave上的问题 462
slave服务器崩溃及复制无法启动 462
slave连接超时及反复重新连接 463
slave上的查询结果与master上的不同 463
当尝试重启SSL时slave出错 464
内存表数据丢失 465
slave崩溃后临时表丢失 465
slave运行慢而且与master不同步 465
slave崩溃后数据丢失 466
崩溃后表损坏 466
slave上中继日志损坏 467
slave重启时的多个错误 467
slave上事务失败的后果 467
I/O线程的问题 467
SQL线程的问题:不一致 468
slave上的错误不一样 468
高级复制问题 469
变更没有在拓扑中复制 469
环形复制的问题 469
多master的问题 470
HA ERR KEY NOT FOUND错误 470
GTID问题 470
复制的故障排除工具 471
最佳实践 472
了解你的拓扑结构 472
检查所有服务器的状态 475
检查日志 475
检查配置 475
有序地执行关闭操作 475
有序地执行故障后的重启操作 476
手动执行失败的查询 476
不要混合使用事务型表和非事务型表 477
一般步骤 477
报告复制错误 478
小结 479
第15章 保护你的资产 481
什么是信息保护 482
信息保障的三个实践 482
信息保障为什么重要 483
信息完整性、灾难恢复及备份的职责 483
高可用性与灾难恢复 484
灾难恢复 484
数据恢复的重要性 489
备份和恢复 490
备份实用程序和操作系统层的解决方案 494
MySQL企业备份 495
使用MySQL实用工具集进行数据库的导出和导入 507
mysqldump工具 507
物理文件复制 510
逻辑卷管理器快照 511
XtraBackup 516
备份方法的比较 516
备份和MySQL复制 517
使用复制进行备份和恢复 518
PITR 518
自动备份 526
小结 528
第16章 MySQL企业版监控 530
MySQL企业版监控入门 531
产品 532
剖析MySQL企业监控器 532
安装概述 533
MySQL企业监控组件 537
Dashboard 537
监控代理 539
advisor 539
查询分析器 541
MySQL产品支持 542
使用MySQL企业版监控 542
监控 544
查询分析器 549
更多信息 551
小结 551
第17章 使用MySQL实用工具管理MySQL复制 553
常见的MySQL复制任务 554
状态检查 554
停止复制 557
添加slave 558
MySQL实用工具 560
入门 560
不通过工作台使用实用工具 560
通过工作台使用实用工具 560
常用工具 562
比较数据库的一致性:mysqldbcompare 562
复制数据库:mysqldbcopy 565
导出数据库:mysqldbexport 566
导入数据库:mysqldbimport 569
发现不同:mysqldiff 570
显示磁盘使用情况:mysqldiskusage 574
检查表的索引:mysqlindexcheck 577
查找元数据:mysqlmetagrep 578
查找进程:mysqlprocgrep 579
克隆服务器:mysqlserverclone 581
显示服务器信息:mysqlserverinfo 583
克隆用户:mysqluserclone 584
实用工具客户端:mysqluc 585
复制的实用工具 586
配置复制:mysqlreplicate 586
检查复制的配置:mysqlrplcheck 588
显示拓扑结构:mysqlrplshow 591
高可用的实用工具 592
概念 592
mysqlrpladmin 593
mysqlfailover 598
创建自己的实用工具 606
MySQL实用工具的结构 606
自定义工具的示例 607
小结 616
附录A复制的提示和技巧 617
附录B一个GTID的实现 634
索引 645