如何批量优化多个用户的mysql?

举报
浮尘 发表于 2021/01/30 18:17:41 2021/01/30
【摘要】 如果是云上的数据库环境通常不会存在这些问题,现如今的各个公司的云上产品都是已经经过优化过的,docker容器化部署,一键完成部署安安装,并且参数配置和性能也是根据用户的购买而设置成最优的。本文是针对我们的产品在用户环境部署,每个都单独安装部署Mysql服务器的应用场景。其它数据库当然也有参考意义。在我们的应用产品从研发,到测试,到最终用户的安装部署,经常会出现各种数据库性能问题。我们需要经常...

如果是云上的数据库环境通常不会存在这些问题,现如今的各个公司的云上产品都是已经经过优化过的,docker容器化部署,一键完成部署安安装,并且参数配置和性能也是根据用户的购买而设置成最优的。

本文是针对我们的产品在用户环境部署,每个都单独安装部署Mysql服务器的应用场景。其它数据库当然也有参考意义。

在我们的应用产品从研发,到测试,到最终用户的安装部署,经常会出现各种数据库性能问题。我们需要经常性的对各种场景进行数据库优化。

我们的优化可能包括多种方式,从硬件配置,到架构,到软件本身的配置,到应用程序的代码优化,等等。

然而除了少部分针对特殊场景需要做的优化措施,大部分优化措施我们都是可以预见的,可以事先做好,避免到用户现场部署好后再采坑。

对用户来说,通常,时间太长的停机都是不可接受的。

当可以预见我们的产品会有众多的用户,而对每个用户都是独立部署数据库服务器的时候,我们就需要有方便的措施,尽可能的实现把可预见的优化措施实现做好,让产品在用户环境真正运行的时候DBA可以后顾无忧。

对于大多数公司的产品来说,通常研发只负责产品的开发,而实施负责用户现场的产品的安装部署。想要靠实施去优化用户环境的数据库,显然不太可能。而对于DBA来说,用户一旦多了,就会分身泛术。所以我们需要有一键安装部署的方案,不仅能把我们的应用产品部署到现场环境,也需要把我们优化好的数据库应用部署到现场环境。

下面就是我的方案:

1:获取mysql绿色版

我们需要从mysql官方下载符合产品需求的mysql绿色版,zip包,不能使用msi格式的,因为mysql官方安装版通常都是没有优化过的,有太多的参数需要优化,并且无法按照我们的安装配置要求实现定制化。

2:修改mysql绿色版

DBA在本地环境,对绿色版mysql进行初始化,然后开始加入优化特性。比如针对我之前文章说的那些数据库优化参数,我们可以针对服务器的物理内存,针对不同用户的环境,不同内存配置,4G,8G,16G,32G,64G,128G等,其它内存的都可以算作这个附近区间范围的。我们可以给绿色版mysql添加多个不同的配置文件,每个配置文件中的参数都根据对应的内存大小做好优化。并添加现场避坑的参数,如skip-namre-resolve (跳过命名解析,避免跨IP访问的机器无法解析域名而访问不了)、max_connettions,max_allowed_packet(改大可以增加数据库备份恢复的性能)、max_connections 等等,这里不一一列举。也可以加上安全性相关的配置,如mysql密码校验插件 plugin-load=validate_password.dll等等,还有针对负载均衡部署场景需要的开启二进制日志相关的配置,以及对应的日志保留策略相关的参数。这些参数都是在mysql的官方安装包中没有的,我们需要手动事先配置好,并添加到配置文件中。这些可能是通用的。而对于不同内存的配置,主要是innodb_buffer_pool_size,join_buffer_size, innodb_log_file_size,等等,这些可以根据不同的物理内存,进行不同的优化配置,各个配置文件中的内容则是不一样的。

我们还可以加上其他的修改,如初始化用户,为了增强安全性,去掉默认的root用户,添加非roo用户的默认管理员,针对现场应用程序,分配不同权限的初始用户,并添加好必要的权限,以及满足密码安全性要求的密码等。这些也是在mysql的官方安装包中没有,我们需要定制化处理的。

在全部定制化修改都完成后,我们再删除部分现场需要的日志,如事务日志,错误日志,以及二进制日志,这些都是可以在Mysql安装部署后第一次启动时重新创建的。保持定制化安装的干净将有利于实施在现场的安装部署。

3:制作Mysql绿色版安装包

针对windows用户环境,我们可以通过nsis脚本编写安装包,实现绿色版安装包的一键安装部署。通过安装包,把数据库安装部署到指定存储位置。安装包需要判断服务器的物理内存,以选择不同的配置文件作为默认的配置参数,并实现安装路径文件权限的修改, 安装包也需要实现安装mysql服务,并启动服务等,最终实现可以一键安装的exe程序。

针对linux用户,我们可以用shell制作安装脚本,用shell脚本实现tar包的解压,服务器物理内存的获取,配置的修改,mysql实例服务的安装等等,所有上面提到的NSIS脚本实现的windows安装包的功能都可以用shell脚本实现。

4:合理的数据库脚本安装策略

对于应用程序的部署来说,不仅仅需要安装好数据库服务器,还需要创建产品对应的数据库。这些我们都可以通过sql脚本事先做好,在数据库服务器安装好后,我们可以通过安装包调用mysql的命令来实现产品数据库的sql脚本的运行,实现产品数据库的安装。同样通过nsis或者shell脚本定制化的安装包来实现修改应用程序数据库连接的配置。针对应用程序本身的性能优化相关的sql,我们应该在产品数据库部署到现场之前,就做好充分测试,做好相关的加索引,修改表结构等性能优化,这些都可以随产品安装的sql一起部署到现场用户环境。

其它的优化,包括主从复制,双主复制,数据库集群等,我们都可以通过事先配置好,用脚本做好安装包,最终实施在现场用户环境部署时只需要执行指定的脚本或者安装包一键完成所有的架构相关的优化。

只要做好上面几个步骤,我们就可以实现把预定好的性能优化措施添加到我们的产品数据库中去了,最终用户现场的数据库也就是最优的,DBA也可以高枕无忧了!


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200