Preface 前言
为什么要写这本书
数据对于一个企业来说至关重要。DBA(数据库管理员)就是管理这些数据的人员,企业每日要处理成千上万的资金流水,这离不开DBA团队的支持,一旦数据库出现故障,后果可想而知。试想一下,你在银行用ATM取钱时,账户中的金额一瞬间被重置为零,你会是什么心情。
DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能,保证数据库服务可以7×24小时稳定、高效运转。DBA是没有休息日的,不论是周末还是节假日,我们都得随时待命,就算是去医院给孩子看病,也都会随身携带着笔记本电脑,以便及时响应突发的各种问题。这种匠心精神可以从以下三方面来诠释。
(1)DBA精神是责任心的体现
作为一名合格的DBA,我们必须随时思考备份是否有遗漏,监控能否更全面,有没有漏掉必须设置的安全权限限制,出问题时,有没有第一时间分析并给出解决方案等。
(2)DBA精神是服务心的体现
DBA应该发自内心地主动对数据库不断进行优化,及时监控磁盘报警、内存不足、CPU过载等情况。
(3)DBA精神是学习心的体现
DBA要能随时发现问题,分析并解决问题,要基于故障出现的场景,结合自己的经验和积累的知识来寻找问题的根源以及解决办法,这就注定我们要持续学习,除了沉淀经验,还要去探索未知的知识,只有不断充实自己,才能不断成长。
我个人非常赞同“专业的事要交给专业的人来做”这句话,毕竟“闻道有先后,术业有专攻”。舒马赫不会研发发动机,但并不妨碍他取得F1方程式赛车的冠军。在部分创业型的小公司里,并没有DBA这个职位,一切皆由开发人员负责,但我遇到过很多开发人员误删除数据的事故,因为这并非他的本职工作,他将大量的时间都花在了编写代码上,再让他作为DBA操作数据库,免不了会出现拿不准的情况,结果就导致了悲剧的发生。人的精力是有限的,身兼数职必然会提高误操作概率。从另一个角度来说,DBA的工作对实践经验和工作能力的要求较高,没有经过大量的实践是很难胜任的。
本书以构建高性能的MySQL服务器为核心,详细介绍了MariaDB 10.5和MySQL 8.0的新特性,并从故障诊断与优化、性能调优、备份与恢复、MySQL高可用集群搭建与管理、MySQL性能与服务监控、SQL自助上线等角度深入讲解了如何管理与维护MySQL服务器。
书中实战相关的内容均是基于笔者多年的实践经验整理而成,对于有代表性的疑难问题,则给出了实用的情景模拟以及解决方案。不论你目前有没有遇到过此类问题,相信本书都会对你有借鉴意义。
数据库技术在不断发展,本书截稿后,相关的更新仍在继续,我基于最近的更新撰写了一些文章,包括:
□ MariaDB Xpand分布式数据库发布
□ MariaDB 10.6(GA)的新特性和改进
□ MariaDB 10.8(GA)Alter修改表结构实现从库无延迟并行复制
□ MHA复刻版轻松实现MySQL高可用故障转移
□ Ansible简易版
□ 循环分批次更改10万行数据记录
□ mydumper支持流式备份恢复
□ 借助LogAnalyzer打造轻量级数据库审计日志平台
考虑到出版周期,暂未将上述内容纳入书中,读者可通过网址https://github.com/hcymysql/mysql_book获取。
读者对象
本书是基于应用撰写的数据库运维图书,主要面向使用MySQL InnoDB存储引擎作为后端数据库的运维人员。书中的大部分示例来源于生产环境中,要想更好地学习本书的内容,读者需要具备以下条件:
□ 有一定的SQL基础。
□ 掌握基本的MySQL操作和Linux操作,以及数据库基本原理。
□ 接触过PHP、Python和Shell脚本语言。
如何阅读本书
本书共10章,分为四部分。
第一部分(第1章和第2章)详细介绍了MariaDB 10.5和MySQL 8.0的新特性,包括安装步骤、升级方法和注意事项等内容。
第二部分(第3~6章)为故障诊断与性能调优。本篇内容基于生产环境下MySQL的故障处理方案整理而成,包括表设计阶段范式的理解、字段类型的选取、采用表锁还是行锁、MySQL默认的隔离级别与传统数据库(如SQL Server、Oracle)的区别、SQL语句的优化以及合理利用索引等。
第三部分(第7~9章)介绍如何搭建高可用架构,内容包括MariaDB MaxScale高可用架构的实现与读写分离、MySQL组复制集群管理,基于TSpider中间件实现分库分表等。
第四部分(第10章)介绍了MySQL Monitor和MySQL Slowquery。
每个部分都可以单独作为一本迷你书阅读,如果你从未接触过MariaDB 10.5或MySQL 8.0,建议从第一部分开始阅读。
勘误和支持
由于我的写作水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。你可以将书中的错误发到https://github.com/hcymysql/mysql_book,我将尽力提供满意的解答。如果你有更多宝贵的意见,也欢迎发送邮件至邮箱chunyang_he@139.com,期待收到你的真挚反馈。
致谢
在凡普公司7年多的时间里,我得到了很多帮助,在这里感谢部门总监对我的信任,让我始终挑战运维一线,使我不断成长;也感谢工作中与我对接的研发同事,关于数据库运维基础平台的搭建,他们给了我许多建设性的意见,没有他们的帮助,本书会缺少许多精彩的内容。
感谢dbaplus社群、51CTO博客提供了知识展示的平台,拓展了我的视野,同时也感谢韩锋、邱文辉、石鹏、杨建荣、杨志洪等朋友的支持。
谨以此书,献给我最亲爱的家人王丹、贺可昕,以及众多热爱MySQL的朋友。
贺春旸
中国,北京,2022年8月