《MySQL DBA修炼之道》——导读

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本书主要讲述MySQL DBA的必备技能,包括MySQL的安装部署、开发、测试、监控和运维,此外,读者还可从中学习到系统架构的一些知识。 我从业10多年,先是在传统行业做开发工程师、系统管理员、Oracle DBA,2008年因为机缘巧合投身互联网,开始从事MySQL运维工作。


400862e7e05601129112f8c570232e70bafd5f1d ac2a75296c605bad3c6f7a2f4348912f448ccaba

**

前言
**
为什么要写本书

本书主要讲述MySQL DBA的必备技能,包括MySQL的安装部署、开发、测试、监控和运维,此外,读者还可从中学习到系统架构的一些知识。
我从业10多年,先是在传统行业做开发工程师、系统管理员、Oracle DBA,2008年因为机缘巧合投身互联网,开始从事MySQL运维工作。相对于成熟的商业数据库,MySQL缺乏高质量的技术文档和图书,我在接触MySQL的过程中,也感觉市面上的相关图书还存在一些不足,难以系统化地学习MySQL。
从一名Oracle DBA转型为一名MySQL DBA,从传统领域转投到互联网公司,即便我之前有丰富的经验,在学习MySQL的过程中也仍然走了一些弯路。成为一名MySQL DBA并不难,但成为一名高水平的MySQL DBA则需要时间、知识、技能、经验和意识的积累。
我在学习MySQL的过程中,有时会去看技术论坛,或者通过MSN群等聊天工具咨询他人一些问题,也得到过一些朋友的帮助。国内存在一批高素质的MySQL DBA,但由于各种现实因素,有心写一本关于MySQL DBA实战的书的人很少,所以市面上缺乏高质量的相关图书不足为奇。2013年年初,华章公司的策划编辑杨绣国找到我,说希望我能写一本关于MySQL的书,我当时很犹豫,虽然我有时会在网上回答一些问题,也定期撰写个人博客,但是,写一本书,对于我来说,是一个艰巨的任务。经过一些交流,我慢慢明确了自己的想法,其实我一直是想写一本书的,既然我对市面上的相关图书不太满意,那么就自己写一本吧,当时我唯一欠缺的是写作经验以及时间。
我写这本书的目的是想做一个尝试——引领感兴趣的读者进入MySQL数据库运维领域。国内互联网行业正在高速发展,迫切需要大量的MySQL人才,希望这本书可以帮助一些读者顺利进入数据库领域。而且,我也想将自己的一些心得分享给读者,希望热爱数据库技术的同行们在工作中少走弯路。
在技术领域工作多年后,文字写作对于我来说其实已经很陌生了,弗朗西斯·培根说过,“阅读使人充实,谈论使人机敏,写作使人精确”。在本书的写作的过程中,其实我自己也获得了很多,不仅学到了更多的知识,对于自己的精神也是一种洗礼。写作真的是一种积极而富有价值的创作,我们只有正确地掌握所讲述的内容,才能为言行思想带来正能量。
希望在这个世界上,有越来越多的人愿意分享,且能享受分享的乐趣。

读者对象

本书的主要读者是MySQL DBA,在现实中,许多公司并没有配备专职的数据库维护人员,数据库的维护工作往往也是由开发工程师和系统管理员负责的,因此这本书也适用于他们。
这是一本偏向实战的技术书籍,不会过多地涉及技术的细节和原理,我会尽量直接地给出解决方案;本书除了讲MySQL技能,还花了大量篇幅讲述架构;本书不仅讲述技术,也讲述技术之外的一些运维管理规则。对数据库的使用、维护和管理感兴趣的运维工程师、架构师、运维经理、开发工程师、测试工程师都可以将本书作为参考图书,而了解其他领域会有助于你的职业发展。
本书也适合希望转行到数据库运维领域的人士。许多人想从事IT工作,但当下时间宝贵,要想进入一个行业或改变职业方向,往往会花费巨大的时间成本,所以这本书将尽量做到简单、易懂,以节省大家的学习成本。

如何阅读本书

本书将分为5个部分,分别从入门、开发、测试、运维、性能与架构这几个方面来介绍MySQL的使用。对于初次接触MySQL的读者,建议按照章节顺序逐步学习。对于已经有一定经验的读者,则可以选择自己感兴趣的篇章,跳过自己已经熟悉的内容。
第一部分讲述了MySQL的基础架构、权限机制、常用的存储引擎、复制架构、安装及常用命令等知识。如果读者是初次接触MySQL,那么可能还需要在这一部分上花一些时间。在掌握Linux和MySQL的基本使用方法之后,就可以开始第二部分的学习了。
第二部分将介绍MySQL数据库开发相关的基础知识和技巧。基础知识包括关系数据模型、字符集、常用的SQL语法、范式、索引和事务等。由于开发的领域很广,所以本部分仅仅选取了一些常用的技巧分享给大家。最后会结合实际生产,提供一份开发规范供大家参考。
第三部分介绍了数据库基准测试所需要的理论知识和常用的测试工具。本部分将介绍一个MySQL的基准测试模型。
第四部分介绍了MySQL运维工作的各项职责:监控、复制、迁移、升级、备份和恢复,然后通过一些案例向读者传授一些维护技巧及处理问题的方法。读者还将学习到规模化运维MySQL的一些知识和规则。
第五部分介绍了性能调优的一些理论知识,以及从应用程序到数据库,再到存储等各个环节的优化。由于架构和性能优化密切相关,本部分也介绍了一些MySQL DBA需要熟悉的架构优化知识。初次接触MySQL的读者对于架构优化的内容可能会感到难以理解,但随着经验的增长,再理解这些内容将不会再有问题。
本书假设读者已经对软硬件有了一定的认识,掌握了一门脚本语言,并且对Unix或Linux有一定的使用经验,对于数据库有了基本的认识。阅读本书时,读者不需要预先准备好上述的所有知识,但需要有意识地在阅读本书之外不断地补充自己的基础知识。我会对以上内容做深入的讲解,但如果读者有基础会更好,好的基础有利于快速吸收知识和深入思考问题。如果读者还不会使用Linux和编写Shell脚本,那么,建议尽快搭建一个学习环境。
由于DBA需要和研发、测试、产品、运营、监控等团队进行合作,所以对于相关领域所涉及的数据库知识,本书也会做一些介绍。但是,由于经验侧重的关系,本书将主要从DBA的角度来讲述这些知识和技能。
本书主要基于MySQL官方5.1版本写作,这也是目前最流行的版本,我会补充MySQL最新版本的少许内容,但跟踪MySQL新版本更合适的策略是关注官方发布的新特性说明、新版本的文档手册,跟踪业内专家的技术博客和社交媒体等。
通过阅读本书,读者可以学到MySQL的许多知识,但是仅通过阅读是难以获得技能和经验的。读者需要有一个适合自己的MySQL测试环境,并能够不断地思考和实践自己的想法,这样才能够掌握技能,并得到属于自己的经验。

目录

第一部分 入门篇
**[第1章 理解MySQL
1.1 MySQL介绍]( https://yq.aliyun.com/articles/89657)**
1.1.1 应用领域和适用场景
1.1.2 为什么那么多公司和机构选择使用MySQL
1.1.3 MySQL的优势是什么,它解决了什么问题
1.2 MySQL的基础架构和版本
1.2.1 软件架构中数据库的定位
1.2.2 MySQL的基础架构
1.2.3 MySQL的版本及特性
1.2.4 MySQL的开发周期
1.3 查询执行过程概述
1.4 MySQL权限
1.4.1 MySQL权限机制
1.4.2 赋予权限和回收权限
1.5 长连接、短连接、连接池
1.5.1 短连接
1.5.2 长连接
1.5.3 连接池
1.5.4 持久连接和连接池的区别
1.6 存储引擎简介
1.6.1 InnoDB引擎
1.6.2 MyISAM引擎
1.6.3 MEMORY存储引擎
1.6.4 ARCHIVE存储引擎
1.6.5 选择合适的引擎
1.6.6 选择何种平台
1.7 MySQL复制架构
1.8 一些基础概念
**[第2章 MySQL安装部署和入门
2.1 如何选择MySQL版本]( https://yq.aliyun.com/articles/89746)**
2.2 官方版本的安装
2.2.1 二进制包的安装
2.2.2 源码编译安装
2.3 其他MySQL分支的安装
2.4 安装InnoDB Plugin
2.5 常用命令
2.5.1 使用mysql命令
2.5.2 使用mysqladmin命令
2.5.3 使用mysqldump命令
2.6 MySQL的主要参数设置
第二部分 开发篇
**[第3章 开发基础
3.1 相关基础概念]( https://yq.aliyun.com/articles/89791)**
3.2 数据模型
3.2.1 关系数据模型介绍
3.2.2 实体–关系建模
3.2.3 其他数据模型
3.3 SQL基础
3.3.1 变量
3.3.2 保留字
3.3.3 MySQL注释
3.3.4 数据类型
3.3.5 函数
3.3.6 操作符及优先级
3.3.7 MySQL示例employees数据库
3.3.8 SQL语法
3.4 PHP开发
3.4.1 概述
3.4.2 客户端访问过程
3.4.3 开发工具
3.4.4 操作数据
3.4.5 PHP数据库开发建议
3.5 索引
3.5.1 索引介绍
3.5.2 使用索引的场景及注意事项
3.5.3 索引的错误用法
3.5.4 如何使用EXPLAIN工具
3.5.5 优化索引的方法学
3.6 ID主键
3.7 字符集和国际化支持
3.7.1 什么是字符集
3.7.2 国际化支持
3.7.3 字符集设置
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
监控 算法 关系型数据库
DBA很忙—MySQL的性能优化及自动化运维实践
作者:王辰 来自:高效运维(ID:greatops) DBA的日常工作 首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复、监控状态、集群搭建与扩容、数据迁移和高可用,这是我们 DBA 的功能。
5121 0
|
4月前
|
SQL 关系型数据库 MySQL
完美,阿里DBA骨干团队编写的792页MySQL调优笔记真香
这个世界是由问题组成的,理想的状态和实际状态之间的差异造成了问题。国家领导解决人民生活幸福的大问题,公司的总经理解决盈利的问题,而本书只想解决MySQL数据库性能这么一一个“小问题”。
|
4月前
|
运维 关系型数据库 MySQL
MySQL DBA的必备参考,两位数据库资深专家呕心沥血之作
互联网发展至今,开源软件已经深入人心,并且受到广泛的支持和响应,很多公司在使用开源软件的同时也输出了一些好的开源产品。MySQL 作为当今世界.上最受欢迎的开源数据库产品之一,在很多互联网企业里起到了不可或缺的作用。由于MySQL的诸多特性,比如开源免费、灵活、轻量简单且越来越多的企业开始使用MySQL,在业界诞生了一大批相关从业者,他们研究MySQL的原理,探讨MySQL的架构,完善MySQL的运维,丰富MySQL的工具,促进MySQL的发展,我们称这些人为MySQL DBA,而本人也是其中之一,深感荣幸。
|
5月前
|
关系型数据库 MySQL 数据库
啥?阿里DBA团队总监把MySQL 性能调优 金字塔,写进了800页笔记?
MySQL之所以能成为现在最流行的开源数据库,这跟它的开放性、包容性是分不开的。它的入门门槛低到用一条命令就能把MySQL安装起来,你能在程序开发的入门资料中很容易就找到MySQL的配套使用教程,你可以不用付任何费用就能在自己的环境中部署起来对外承载业务。
|
5月前
|
运维 关系型数据库 MySQL
GitHub无抗手!MySQL DBA攻坚指南一出,阿里数据库专家都解脱了
大家可能并不觉得,数据库其实非常重要,每个业内巨头,每个成熟的互联网产品都有多个数据库系统,能保证大量并发场景下不出错,并非易事。尤其是银行、电商、电信、电力、航空等实时交易重要的环境中,可靠的数据库是重中之重,稳定压倒一切。
|
8月前
|
关系型数据库 MySQL 程序员
卷?阿里DBA首次公开MySQL调优笔记,竟让GitHub的程序员集体叫好
对于工作了两三年的技术人员来说,在实践上已经有了比较多的积累,解决过很多问题——可能通过sys schema查询事务锁等待解决了系统的并发问题;通过设计读写分离架构扩展了应用的读性能线性扩展问题 但是作为求知欲强的技术人员,我们急切地希望知其所以然,了解MySQL到底是怎么设计的,以及为什么这样设计,读写分离架构适应的场景有哪些?什么时候建议用分库分表?等等。
69 0
|
9月前
|
SQL 运维 NoSQL
阿里大牛撰写"星耀级"MySQL DBA工作笔记!颠覆我对数据库的认知
MySQL是开源数据库方向的典型代表,它拥有成熟的生态体系,同时在可靠性、性能、易用性方面表现出色,它的发展历程见证了互联网的兴衰与成长。 在 DeveloperWeek 上曾发起一个调查,超过 3/5 的受访者使用 SQL,其中MySQL 以 38.9% 的使用率高居榜首,其后依次是 MongoDB(24.6%)、PostgreSQL(17.4%)、Redis(8.4%)和 Cassandra(3.0%)。毫无疑问,以MySQL为主的开源技术生态正变得越来越流行。同样的,对我们掌握MySQL也迫在眉睫。那么,接下来,就让小轩带领大家来深入了解MySQL吧!
|
10月前
|
存储 人工智能 缓存
ChatGPT会取代MySQL DBA吗?(译自Percona,文末投票)
ChatGPT是目前科技界最热门的话题,有人甚至说ChatGPT已经通过了谷歌的3级编程面试。我想知道,这是否意味着ChatGPT也准备好取代MySQL DBA?答案是否定的,让我来告诉你为什么。
|
11月前
|
SQL 关系型数据库 MySQL
一个奇怪的MySQL慢查询,打懵了不懂业务的DBA!
最近,开发人员需要定期的删除表里一定时间以前的数据,SQL如下: mysql > delete from testtable WHERE biz_date <= '2017-08-21 00:00:00' AND status = 2 limit 500\G 前段时间在优化的时候,我们已经在相应的查询条件上加上了索引,如下: KEY `idx_bizdate_st` (`biz_date`,`status`) 但是实际执行的SQL依然非常慢,为什么呢,我们来一步步分析验证下。
|
SQL 存储 运维
FAQ系列 | MySQL DBA修炼秘籍
FAQ系列 | MySQL DBA修炼秘籍