具体描述
mysql资深专家ronald bradford撰写的精品书籍《effective mysql之备份与恢复》涵盖了所有能够确保开发合理备份和恢复计划的选项,并对各选项做了详细说明,给出了语法示例。本书对照讲解不同的备份和恢复策略,将帮助您防止mysql数据因范围广泛的各种灾难受到损坏。
主要内容:
理解不同备份策略如何影响锁定和系统可用性;
了解静态备份选项和时间点要求的重要性;
体会使用mysql replication实现不同备份策略的优势;
了解云计算中mysql方案的好处与风险;
确定对最优数据保护需求具有决定性影响的重要业务因素;
识别影响数据持久性和性能的重要配置变量;
发现潜在灾难类型并制定可靠对策;
使用压缩、流、增量和并行选项来优化备份方法 ;
作者简介
Ronald Bradford在关系数据库领域已经工作了二十余年。他具有深厚的专业背景和在数据库体系结构、性能调优以及使用ingres和oracle进行大型企业系统管理方面十多年的工作经验。在过去的13年中,他主要使用mysql这一全球最流行的开源数据库工作。他曾担任oracle公司(1996~1999)的咨询顾问,也曾担任MySQL有限公司(2006~2008)的高级顾问。他对mysql社区的贡献颇多,被认定为planet MySQL(2010)上最佳个人MySQL博客的博主。所获得的国际认可的荣誉包括:被授予oracle ace director(2010)和MySQL community member of the year(2009)。
Ronald不只有广泛的专业知识和咨询经验,也有把mysql的使用方法与心得分享出来的激情。从2006年开始,他就在做公开演讲,而在2010~2011年,他的演讲已经超过60场,足迹遍布20个国家。
目录信息
1.1 mysql备份 2
1.1.1 确定数据库的大小 3
1.1.2 选择锁策略 4
1.1.3 运行时间 5
1.1.4 组合信息 6
1.2 执行mysql备份 6
1.2.1 运行mysqldump 7
1.2.2 安全地备份 9
1.2.3 使用mysqldump的好处 9
1.2.4 更多信息 10
1.2.5 其他选项 10
1.3 本章小结 11
第2章 理解备份选项 13
2.1 术语 14
2.2 选择备份策略 15
2.2.1 数据库的可用性 15
2.2.2 存储引擎 16
2.2.3 锁策略 16
.2.2.4 mysql拓扑 20
2.3 静态备份选项 20
2.3.1 文件系统备份 21
2.3.2 sql导出 22
2.3.3 表抽取 30
2.3.4 文件系统快照 31
2.3.5 innodb热备份 37
2.3.6 未讨论到的选项 53
2.4 时间点要求 54
2.4.1 二进制日志 55
2.4.2 二进制日志文件的位置 56
2.4.3 二进制日志备份的方案 57
2.5 硬件方面的考虑事项 58
2.6 数据源一致性 59
2.7 备份的安全性 59
2.8 本章小结 60
第3章 理解灾难恢复的业务要求 61
3.1 需求定义 62
3.2 明确责任 63
3.2.1 术语 64
3.2.2 技术人员的责任 66
3.2.3 决策者的责任 66
3.2.4 确定依赖关系 67
3.3 案例研究 67
3.3.1 mysql拓扑 67
3.3.2 备份和恢复策略 67
3.3.3 一场真实的灾难 68
3.3.4 技术成果 70
3.3.5 决策过程 71
3.3.6 必不可少的外部沟通 72
3.4 为最糟的情形制定计划 72
3.4.1 san的完全失败 73
3.4.2 电力中断 73
3.4.3 爆炸 74
3.4.4 fbi的扣押 74
3.4.5 断电 74
3.4.6 人员因素 75
3.4.7 人力资源 75
3.5 制定一个策略计划 76
3.6 本章小结 77
第4章 使用mysql复制 79
4.1 mysql复制的体系结构 80
4.2 mysql复制的局限性 83
4.2.1 复制的滞后 83
4.2.2 一致性 85
4.2.3 完备性 91
4.3 复制设计的考虑事项 92
4.3.1 二进制日志的行格式 92
4.3.2 半同步复制 95
4.4 复制备份的考虑事项 95
4.4.1 innodb后台线程 98
4.4.2 冷备份选项 98
4.4.3 mysqldump选项 99
4.4.4 文件系统快照选项 101
4.4.5 mysql企业备份(meb)选项 102
4.4.6 xtrabackup选项 102
4.5 体系结构设计的考虑事项 103
4.6 将出现的复制功能 104
4.7 本章小结 105
第5章 使用恢复选项 107
5.1 测试简述 108
5.2 明确所需的恢复类型 109
5.2.1 mysql软件失败 109
5.2.2 崩溃恢复 111
5.2.3 myisam表恢复 114
5.2.4 其他存储引擎 116
5.2.5 表定义的恢复 117
5.3 执行静态恢复 118
5.3.1 mysql软件安装 119
5.3.2 mysql数据 120
5.4 执行一个时间点恢复 129
5.4.1 二进制日志的位置 129
5.4.2 独立恢复 131
5.4.3 使用复制流 133
5.4.4 二进制日志镜像 134
5.5 恢复的验证 137
5.6 备份和恢复的测试 139
5.7 其他重要方面 140
5.8 本章小结 141
第6章 mysql的配置选项 143
6.1 数据管理 144
6.1.1 数据位置 144
6.1.2 数据一致性 146
6.1.3 二进制日志 150
6.2 mysql复制 153
6.3 恢复 156
6.4 本章小结 158
第7章 灾难场景 159
7.1 处理mysql灾难 160
7.2 著名的mysql灾难 161
7.2.1 magnolia 162
7.2.2 couch surfing 163
7.2.3 journal space 164
7.2.4 percona 165
7.3 其他著名的数据灾难 167
7.3.1 sidekick/microsoft的数据丢失 167
7.3.2 github 168
7.3.3 td bank 169
7.4 通常的mysql灾难情形 170
7.4.1 没有激活记录二进制日志 170
7.4.2 单服务器 171
7.4.3 适当的mysql安全 172
7.4.4 适当的mysql配置 173
7.4.5 删除mysql数据 176
7.4.6 删除innodb数据文件 179
7.4.7 删除mysql二进制日志 181
7.5 现有备份和恢复过程的灾难 183
7.5.1 mysql软件升级 183
7.5.2 操作系统的安全补丁升级 184
7.5.3 处理myisam毁坏 185
7.5.4 丢失数据库模式 197
7.5.5 在一个运行中的mysql实例上恢复备份 199
7.6 处理innodb的特殊情况 202
7.6.1 自动恢复 202
7.6.2 innodb数据字典不一致 204
7.6.3 自动恢复致使数据库服务器崩溃 205
7.7 其他mysql情况 206
7.7.1 复制不一致 206
7.7.2 rds恢复失败 209
7.8 常见的停机原因 210
7.9 外部帮助 212
7.10 本章小结 213
第8章 优化备份和恢复 215
8.1 示例备份环境 216
8.2 使用压缩 218
8.2.1 mysqldump 218
8.2.2 mysql企业备份(meb) 222
8.2.3 xtrabackup 225
8.3 流备份 226
8.3.1 利用ssh 226
8.3.2 利用nc 228
8.3.3 mysql企业备份(meb) 228
8.3.4 xtrabackup 231
8.4 远程备份 233
8.4.1 mysqldump 233
8.4.2 mysql企业备份(meb) 234
8.4.3 xtrabackup 234
8.5 并行处理 235
8.5.1 mydumper 235
8.5.2 xtrabackup 241
8.6 增量备份 244
8.6.1 mysql企业备份(meb) 244
8.6.2 xtrabackup 248
8.7 部分备份 252
8.7.1 mysqldump 253
8.7.2 mysql企业备份(meb) 253
8.7.3 xtrabackup 253
8.8 mysql备份安全 253
8.9 体系结构的考虑 259
8.10 本章小结 260
第9章 云计算中的mysql 261
9.1 amazon relational database service(rds) 262
9.1.1 创建示例数据库 263
9.1.2 mysql版本 264
9.1.3 备份选项 264
9.1.4 恢复选项 268
9.2 google cloud sql 274
9.2.1 创建样本数据库 274
9.2.2 备份选项 276
9.2.3 恢复选项 277
9.3 hp cloud database as a service(dbaas) 277
9.3.1 mysql的版本 278
9.3.2 示例数据库的创建 279
9.3.3 备份选项 280
9.3.4 恢复选项 281
9.4 云对备份和恢复的影响 281
9.5 本章小结 283
· · · · · · (收起)
读后感
用户评价
**评价一:** 《Effective MySQL:备份与恢复》这本书,我拿到手的时候,就有一种踏实的感觉。封面设计简洁大气,但更吸引我的是它承诺的“Effective”——高效、有效。我一直觉得,MySQL的备份和恢复是一个既基础又至关重要的环节,很多时候我们可能只关注数据的日常增删改查,却忽略了灾难来临时,你精心维护的数据可能会瞬间化为乌有。这本书的出现,恰好填补了我在这方面的知识空白。它不像市面上某些教材那样,仅仅是罗列命令和参数,而是深入浅出地讲解了各种备份策略的原理,比如全量备份、增量备份、差异备份,并且详细分析了它们各自的优缺点,以及在不同场景下的适用性。我尤其喜欢书中对逻辑备份和物理备份的对比分析,让我对哪种方式更适合自己的业务有了更清晰的认识。更重要的是,它不仅仅停留在“如何备份”的层面,还花了大量篇幅去讲解“如何恢复”,并且提供了多种恢复场景的解决方案,这对于一个实际操作者来说,简直是福音。我曾经因为操作失误,导致数据库损坏,当时手忙脚乱,完全不知道从何下手,只能祈祷数据没有丢失。读完这本书,我才明白,原来是有系统性的方法论可以遵循的,而且可以提前做好准备,将风险降到最低。书中提供的案例也相当贴近实际,让我能够边学边练,快速掌握核心技能。
**评价八:** 在我的开发工作中,MySQL是不可或缺的一部分。虽然我不是专门的DBA,但我始终认为,理解和掌握数据的备份与恢复是每个与数据库打交道的人必备的技能。《Effective MySQL:备份与恢复》这本书,用一种非常易于理解的方式,向我展示了这项工作的核心要点。我特别喜欢书中对不同备份工具的对比分析,例如mysqldump的易用性、mydumper/myloader的高性能,以及mysqlbackup的灵活性。它并没有强迫我选择某种特定的工具,而是让我能够根据自己的需求和场景,做出最明智的选择。书中对“逻辑备份”和“物理备份”的详细阐述,让我明白了它们各自的优劣势,以及在不同场景下的适用性。例如,当需要进行数据迁移或者对数据进行分析时,逻辑备份可能更方便;而当需要快速恢复大量数据时,物理备份则可能更有效率。让我印象深刻的是,书中还专门讲到了如何进行“增量备份”和“差异备份”,以及如何利用这些技术来降低备份时间和存储空间,这对于我日常的开发和测试工作非常有帮助。这本书的实践指导非常到位,让我能够边学边练,快速掌握核心技能,从而更好地保障我项目数据的安全。
**评价三:** 作为一名在大型互联网公司工作的DBA,我深知数据安全的重要性。MySQL的备份与恢复,绝不仅仅是简单的命令执行,它关系到整个业务的生死存亡。《Effective MySQL:备份与恢复》这本书,就像一位经验丰富的老兵,为我指明了在复杂多变的数据库环境中,如何构建一套滴水不漏的备份与恢复体系。我尤其赞赏书中对“一致性”的强调。数据备份是否一致,直接决定了恢复的有效性。这本书详细讲解了如何通过事务、锁机制以及特定工具选项来保证备份数据的一致性,这对于避免“备份了但恢复不了”的尴尬局面至关重要。此外,书中还对各种备份介质和存储方案进行了深入的探讨,比如本地存储、网络存储、云存储等,并分析了它们在成本、安全性、可用性方面的差异。这让我能够根据公司的实际情况,选择最合适的存储策略。让我感到惊喜的是,书中还涉及了对备份数据的自动化管理和监控,比如如何设置定时备份任务,如何对备份文件进行压缩和加密,以及如何建立备份文件的校验和告警机制。这些细节,正是体现了“Effective”二字的价值所在,它们能够帮助我们从被动应对转变为主动防御,极大地提高了工作效率和安全性。
**评价二:** 在我多年的数据库管理生涯中,MySQL的稳定运行是我最关心的问题之一。而稳定运行的基石,无疑是可靠的备份与恢复机制。我之前也接触过一些关于MySQL备份的书籍,但大多内容比较零散,或者过于理论化,实操性不强。《Effective MySQL:备份与恢复》这本书,则完全颠覆了我之前的印象。它以一种非常结构化的方式,系统地阐述了MySQL备份与恢复的方方面面。我特别欣赏它对备份策略选择的指导,它并没有一味推崇某种特定的备份方式,而是根据不同的业务需求、数据量大小、恢复时间要求等因素,为读者提供了清晰的决策依据。例如,对于需要极短恢复时间的金融系统,它会推荐某些特定的物理备份方案;而对于开发测试环境,则可能更适合采用逻辑备份。书中对各个备份工具的详解,如mysqldump、mysqlbackup、mydumper/myloader等,也是我学习的重点。它不仅介绍了这些工具的基本用法,还深入挖掘了它们的性能调优参数和高级特性,这对于提升备份效率和降低资源消耗至关重要。让我印象深刻的是,书中还详细讲解了如何进行备份数据的验证,以及如何演练恢复流程,确保在真正需要时能够成功恢复。这种严谨的态度,让我对这本书的专业性更加信服。
**评价七:** 我一直对MySQL的备份与恢复工作抱着严谨的态度,因为我深知数据丢失的严重后果。以往,我主要是依靠一些零散的知识和个人经验来处理这项工作。直到我读了《Effective MySQL:备份与恢复》这本书,我才意识到,我之前的做法存在很多不足和盲点。《Effective MySQL:备份与恢复》这本书,提供了一个全面而深入的视角。我特别欣赏书中关于“一致性备份”的讲解,它不仅阐述了逻辑备份和物理备份在一致性方面的差异,还提供了多种技术手段来确保备份数据的完整性。例如,它详细介绍了如何使用`FLUSH TABLES WITH READ LOCK`、`innodb_flush_log_at_trx_commit`等参数来保证数据一致性,这些都是我在实践中非常看重但可能之前没有深入理解的技术细节。此外,书中对不同恢复场景的细致分析,也让我受益匪浅。无论是部分表恢复、特定时间点恢复,还是整个数据库的灾难恢复,书中都提供了详细的操作步骤和注意事项,让我能够从容应对各种突发状况。我甚至还尝试了书中提到的“备份沙盒”环境,用于测试备份和恢复流程,这大大增强了我对数据恢复能力的信心。这本书的价值,远超我最初的预期,它为我提供了一个系统性的框架,让我能够更科学、更有效地管理MySQL的备份与恢复。
**评价九:** 作为一名在云原生环境下工作的运维工程师,MySQL的备份与恢复工作也面临着新的挑战。《Effective MySQL:备份与恢复》这本书,为我提供了在现代IT架构下,如何高效、可靠地进行MySQL数据备份和恢复的解决方案。我特别欣赏书中关于“云原生备份”的章节,它详细介绍了如何利用云平台提供的存储服务,如对象存储(OSS)、块存储(EBS)等,来构建高可用、可扩展的备份方案。书中还介绍了如何利用容器化技术(如Docker、Kubernetes)来部署和管理MySQL备份任务,以及如何实现自动化备份和恢复的流程。这对于我管理大规模的MySQL集群非常有价值。此外,书中对“灾难恢复”的详细讲解,也让我受益匪浅。它不仅仅是关于备份数据的存储,更重要的是如何建立一个完善的灾难恢复计划,包括RPO/RTO目标的设定、恢复演练的实施、以及跨区域的备份策略等。让我印象深刻的是,书中还提到了如何利用自动化脚本和API,将备份与恢复流程集成到DevOps的CI/CD流程中,从而实现数据的快速部署和恢复。这本书真正做到了与时俱进,为我在云原生环境下进行MySQL数据管理提供了有力的指导。
**评价四:** 我是一名刚入行不久的数据库工程师,对于MySQL的各种操作都还在摸索阶段。尤其是在备份和恢复方面,我总是感觉心里没底。很多网上的教程都只是教你如何操作,但背后的原理和最佳实践却很少提及。《Effective MySQL:备份与恢复》这本书,就像我的启蒙老师一样,为我打开了一扇通往MySQL备份与恢复“高效之道”的大门。这本书的语言风格非常平实易懂,即便是对技术细节不太熟悉的我,也能很快理解。它从最基础的逻辑备份开始,逐步深入到更复杂的物理备份和增量备份。书中对不同备份工具的源码分析,虽然我不是开发者,但通过阅读,我能更深刻地理解它们的工作原理,以及如何根据这些原理来优化我的使用方式。让我特别印象深刻的是,书中关于“RPO(恢复点目标)”和“RTO(恢复时间目标)”的讲解,让我明白了备份策略的制定需要服务于业务需求,而不是仅仅为了完成任务。它帮助我理解了,为什么不同的业务场景需要不同的备份频率和恢复方案。这本书还提供了大量的实践建议,比如如何规划备份文件的大小,如何优化备份过程中的I/O和CPU占用,以及如何在恢复过程中最小化对生产环境的影响。这些实操性极强的指导,是我在实际工作中能够快速成长的重要动力。
**评价五:** 我是在一次重要的数据库迁移过程中,接触到《Effective MySQL:备份与恢复》这本书的。当时,我面临着将一个运行了多年的MySQL数据库迁移到新环境的巨大挑战,而数据安全和零宕机是我们最核心的需求。这本书,可以说是我这次迁移成功的关键推手。它详细讲解了各种迁移场景下的备份与恢复策略,以及如何利用这些策略来保障数据的完整性和业务的连续性。我特别受益于书中关于“热备”和“冷备”的对比分析,以及如何在不停机的情况下进行数据备份的详细步骤。它让我明白,所谓的“高效”不仅仅是速度快,更重要的是在保证业务连续性的前提下,实现数据的安全可靠。书中对各种备份工具的性能评估和适用性分析,也为我提供了宝贵的参考,让我能够根据实际情况选择最合适的工具组合。例如,对于大型数据集的备份,传统的mysqldump可能效率不高,而mydumper/myloader组合则能提供更好的性能。更重要的是,书中提供的恢复演练和验证方法,让我能够在迁移前充分测试恢复流程,确保在出现意外情况时,能够迅速恢复到之前的状态。这本书不仅仅是一本技术手册,更是一本关于如何在高风险环境下,保证数据安全的实战指南。
**评价六:** 作为一名有经验的MySQL DBA,我一直在寻找能够进一步提升我技能和拓宽我视野的资源。《Effective MySQL:备份与恢复》这本书,恰恰满足了我的需求。它不仅仅是关于基础的备份与恢复命令,而是深入到更高级的、更具策略性的层面。我非常欣赏书中对于“增量备份”和“差异备份”的细致讲解,并且通过清晰的图示和案例,让我能够透彻理解它们之间的区别以及在实际应用中的最佳实践。它让我明白,如何根据数据变化的速度和恢复的需求,来设计一套最优的备份策略,从而在保证数据安全的同时,最大化地节省存储空间和备份时间。书中还详细介绍了如何进行远程备份和异地备份,以及如何利用自动化脚本来管理备份任务和监控备份状态。这对于构建高可用的灾难恢复方案至关重要。我尤其喜欢书中关于“备份文件的管理”的章节,它涵盖了备份文件的命名规范、存储周期、压缩策略以及安全加密等方面的内容,这些细节往往是被很多技术书籍所忽略的,但它们却是保障备份系统长期稳定运行的关键。这本书让我更加系统地思考如何构建一个健壮、高效、可管理的MySQL备份与恢复体系。
**评价十:** 我一直在寻找一本能够帮助我更深入地理解MySQL备份与恢复原理的书籍,而《Effective MySQL:备份与恢复》这本书,完全超出了我的预期。它不仅仅是操作手册,更是一本深入的理论剖析和实践指南。我非常欣赏书中对MySQL备份与恢复的“底层逻辑”的阐述,例如它详细解释了InnoDB存储引擎在进行备份时是如何处理事务隔离性和数据一致性的。它还深入探讨了不同备份工具(如mysqldump、mysqlbackup、mydumper/myloader)在实现备份和恢复时的技术细节,以及它们各自的优缺点。这让我能够从更深层次去理解这些工具,并能够根据不同的场景进行优化。书中对“恢复策略”的细致分析,包括全量恢复、增量恢复、差异恢复等,以及如何根据业务需求来选择最佳的恢复方案,都让我受益匪浅。它让我明白,备份的最终目的是为了有效的恢复,而一个好的恢复策略,能够极大地缩短故障发生后的业务中断时间。让我印象深刻的是,书中还提到了如何进行“增量备份”和“差异备份”的原理,以及如何利用这些技术来降低备份时间和存储空间,这对于我日常的开发和测试工作非常有帮助。这本书的价值,不仅在于它提供了实用的操作技巧,更在于它帮助我构建了一个更加系统和深入的MySQL备份与恢复知识体系。