[关闭]
@gaoxiaoyunwei2017 2018-05-30T03:28:53.000000Z 字数 5703 阅读 370

DBA很忙—MySQL的性能优化及自动化运维实践

白凡


编辑:白凡

DBA的日常工作

image.png-375.5kB

首先我们来看看DBA的具体工作,我觉得我们DBA真的很忙。备份和恢复、监控状态、集群搭建与扩容、数据迁移和高可用,这是我们DBA的功能。

了解这些功能以后要对体系结构有更加深入的了解,你不知道怎么处理这些故障和投诉的事情。所以我们要去了解缓存/线程、SQL优化、存储引擎以及SQL审计以及锁与实务、体系结构更深一点,就去研究内核原理和源码定制,DBA有这么多工作,他们就像一个小怪兽一样等着我们去解决。今天我站在更加全面的角度跟大家分享一下我觉得我在这一年多DBA工作当中的经验,希望可以给大家带来启发和帮助。

image.png-218.9kB

1. MySQL的性能优化

性能优化就是我想让我的MySQL跑的更快、更顺畅。在我们开始MySQL性能优化之前,我想提出MySQL性能优化的三个关键点。Why?What?How?为什么我们要做性能优化?

image.png-244.3kB

我们的运维来反映我们的数据库,正常情况下是1秒,后来变成10秒,我们就要启动优化的动作。原本他的访问时间是1秒,我们想优化成0.01秒就要开启优化。

第二就是What?哪里是导致我们数据库性能变差的原因一需要找到这个关键点。当我们找到这个问题以后,我们就需要有地方式的进行优化。MySQL优化之前我们要明确的3W关键点。

image.png-91.8kB

1.1 MySQL优化基本流程

其实对于开展MySQL的优化有这样的一个基本流程。

我们登陆系统就不会发现有CPU、IO、网络等等都很正常。在这种情况下怎么办?在这种情况下可以分三种判断。

1.2 优化的几个关键点

image.png-71.3kB

我们通过刚才的基本流程,我们可以确定出MySQL需要几个优化的关键点。

1.2.1 应用访问优化

image.png-72.5kB

我们根据每个关键点稍微开展一下。比方说应用访问的优化:

image.png-468.5kB

1.2.2 操作系统层面的优化

1.2.3 数据库实例的优化

image.png-61.7kB

我列了几个参数我们在标准化的时候需要规范和配置的。这里不一一揭示了。这些参数大家都可以找到,重点看一下。其实这些参数很重要。因为它决定了我们实例的性能。某一些参数配置不合理,我们实例的性能就会受到很大的影响。

1.2.4 SQL语句的优化

image.png-81.6kB

这里有编写高效SQL语句的原则,这个原则我们DBA要知道,DBA要通知业务方的研发,让他们也知道。有很多业务侧进来都是业务写的,他没有经验的话,就会写出一些有问题的语句,所以最后就变成我们DBA要去严查。所以最开始要把这些思想贯彻给业务研发,让他们按照这个流程去编写SQL的设计。

1.3 索引的设计

image.png-287.3kB

这里说的是覆盖索引,比如说有了这个覆盖索引我们的查询,查询的字段都是在这个索引内,还有我们查询的后面的字段也是索引,还有我们一些排序位置也是覆盖索引,就是这一系列全部都是中了索引的情况所以就叫覆盖索引。也列举了一些不能使用索引的情况。比如说不要给选择率低的字段选择索引,如果通过索引扫描记录数超过30%就变成全表扫描了。还有Like额查询条件列最左以通配符%开始,两个独立索引,其中一个用于索引一个用于排序。以上就是对于MySQL性能优化的步骤。

2. 自动化运维实践

所谓自动化运维实践就是相当于给我们DBA提供小工具或者是小帮手,帮助我们打开,而不是他们纠缠着我们。我们移动云自动化运维实践。我们移动云的体量就是几百上千台数据库的体量,如果我们面对几台或者是十几台的数据库的时候,有没有这个自动化其实无所谓,因为你做自动化反而更加麻烦。如果你已经有大的量的时候就是平台化就是在自动化的数据库上进行拓展。

image.png-96.5kB

image.png-113.1kB

image.png-86.6kB

image.png-84.4kB

image.png-98.2kB

image.png-87.1kB

以上就是我们移动云在数据库运维的沉淀和积累。不像腾讯或者是阿里那么大的体量和经验。但是以上是我们探索出来的一些经验,希望可以给各位带来启发或者是帮助。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注