mysql 需要什么硬件配置_如何来给指定的硬件环境配置一份比较合理的MySQL配置文件-爱可生...

简介

通过sysbench的oltp_read_write测试来模拟业务压力、以此来给指定的硬件环境配置一份比较合理的MySQL配置文件。

环境介绍

硬件配置

a5ba86c295d4fd38c7cdb0218a546eec.png

软件环境

223f6d757cbf5aba739bf9ed4096c34e.png

优化层级与指导思想

优化层级

MySQL数据库优化可以在多个不同的层级进行,常见的有:

SQL优化参数优化架构优化本文重点关注:参数优化

指导思想

日志先行 -- 一个事务能否成功提交的关键是日志是否成功落盘,与数据没有太大的关系;也就是说对写的优化可以表述为各方面的资源向写操作倾斜。瓶颈分析 -- 通过show global status 的各个计数器的值基本上就能分析出当前瓶颈所在,再结合一些简单的系统层面的监控工具如top iostat 就能明确瓶颈。整体性能是“读”&“写”之间的再平衡。

优化过程

优化前

my.cnf中的内容(关键部分)

3933f183ca1d55376af3464ffe168078.png

ea19deaf52f6b53b26c18d143a7919e9.png

监控数据

show global status 中Innodb_data_pending_fsyncs 这个status比较高;iostat的util项有比较明显的波峰,峰值使用率高达85%;

监控数据分析与优化思路

对监控数据有两种可能的解释:

由于最小化的安装的buffer_pool_size比较小,所以会频繁的触发innodb_buffer_pool的最大脏页的限制,使得innodb进入暴力刷盘的模式,这种情况下io使用率会明显上升。redo日志重用。 最终的影响可能是两者的叠加,这里先从buffer_pool开始优化。

优化缓冲池

my.cnf中的内容(关键部分)

6a45c6cd9242009df01bd35f5b5a356a.png

91172a9aeb09c35e18e4e15679bd0669.png

监控数据

show global status 中Innodb_data_pending_fsyncs 这个status减小到了 1;iostat的util项峰值有所下降;从性能图像可以看出增大innodb_buffer_pool_size的值后、性能的峰值所对应的并发更高了(当innodb_buffer_pool_size默认的128M调整到200G时innodb_buffer_pool_instances自动增大到了8)调整innodb_buffer_pool_size前后的性能对比

3dadf3ea5f2d75228d2c87390a88882d.png

性能大概提高3倍

监控数据分析与优化思路

针对innob_buffer_pool_size的调整取得了一定的收获,下面将要调整的就是针对redo重用的情况了,也就是说我们要增大innodb_log_files_in_group和innodb_log_file_size到一个合适的值。innob_buffer_pool_size取得的收获还可以进一步扩大,那就是增大innodb_buffer_pool_instances的值。优化日志文件

根据对之前测试的记录每完成一组测试LSN增大4.5G、测试持续时间大概是5分钟;理论上把redo文件增大到5G可以做到整个测试的过程中不发生日志重用、这样的话测试的跑分会更高、曲也线更平滑,不过这个会影响数据库宕机恢复的时间。MySQL在默认配置下innodb_log_files_in_group=2,innodb_log_file_size=48M也就是说跑完一组测试redo日志要刷新48轮(1024*4.5/96 ==48) 先看一下把日志刷新减少到9轮的情况。

my.cnf中的内容(关键部分)

7827084d0fb14422c5991ece07112531.png

f0c790d0aecee99e6dbdf00407154b9b.png

调整innodb_log_files_in_group&innodb_log_file_size前后的性能对比

ca7c6788c9315b1983a07edd9753dcc2.png

性能大概提高2倍

现在看一下日志重用控制在一轮(5G)之内的性能表现

my.cnf中的内容(关键部分)

9728fe0ae766db4954fd789751714da5.png

d0b353c7ae151c1e6f73badb0c27c173.png

调整innodb_log_files_in_group&innodb_log_file_size前后的性能对比

c713c48ec7f64907906418b3af995092.png

性能大概提高2倍

监控数据分析与优化思路

增大redo到5G的情况下由于整个测试过程中几乎没有日志文件重用的问题,这样也就规避由些引发的大量数据刷盘行为,所以性能曲线也就更平滑了。通过show global status 发现Table_open_cache_overflows=200W+、Thread_created=2k+%Cpus : 80.5 us, 13.8 sy, 0.0 ni, 5.4 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st 95%的使用率cpu资源成了大问题,这个使用率下能调整的参数不多了对磁盘的监控数据表明util的峰值已经下降到14%、磁盘已经不在是问题;所以针对innodb_buffer_pool_size、innodb_log_files_in_group&innodb_log_file_size 这两次优化的进入一步优化innodb_buffer_pool_instances、innodb_log_buffer_size 先不进行;在些采用“抓大放小”的方式先调整表缓存与线程缓存。

优化其它已知项

cpu使用率达到了95%,看到这个数值有一种发自内心的无力感,所以打算所目前status中能明确的一些问题直接一起调整了;增大table_open_cache&table_open_cache_instances用于优化表缓存、增大thread_cache_size使cpu不用频繁的创建销毁线程。

my.cnf中的内容(关键部分)

eb6ea218673663064b71699f48fa6375.png

762c4aeea09988232c973b4f787a0e56.png

调整前后的比较

dbeefaee6e61ada57d0e5a2f8d9a8388.png

总结

一、考虑到cpu使用率已经达到95%且增加物理cpu不现实的情况下,决定MySQL参数优化到此为止;最后来看一眼这次优化成果。

4ce815523105e1c94e7323aeff7fcf71.png

二、前面由于篇幅只给出配置文件的一部分、现在我们来看一下完整的配置文件。

dd803541e5a11533e151aea7972ae292.png

8de21876165272eccec6996f96246a69.png

be5ff896cc11bf87253a8b09b81c63d6.png

3f1cf7baf31ffde1950a29306b95ec30.png

说明

之所以max_prepared_stmt_count要调整到这么是因为sysbench的oltp_read_write这个测试会用于prepare语句、如果这个值不够大的话我们测试不了800+并发,你测试sysbench其它oltp用例可能不用这么做,同理max_connections的配置也是如此(不过它确实设置的大了点)有些参数在优化过程中我并没有调整主要原因有两个:①.这是有方法论指导的优化、它更像定向爆破,所以没用的我不去动、在关键参数上调整后已经解决问题的情况下,其它相关的参数我更加倾向不动。②.对于从show global status 中能看出非常明确指向的我也会采取多个参数一起调整的策略。

50c340dc958622057f3cb299893fe352.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

perl插入文本

有2个文件。a.txt和b.txt,文件内容如下cat a.txt111 222 333cat b.txtabc def要求把b文件的内容插入a文件含有222的上面。perl -e open $FH,"b.txt";while (1) {$bytesread($FH,$lines,3,length($lines));last if $bytes0};open $FH_A,"a.txt";while (<…

图片打标

在物体检测问题中&#xff0c;第一个需要解决的就是给训练集中的图片打标&#xff0c;所谓打标&#xff0c;就是用一个文件来描述图中物体的位置框坐标&#xff08;xmin&#xff0c;ymin&#xff0c;xmax&#xff0c;ymax&#xff09;&#xff0c;以定位物体的位置。 一个比较…

js时间格式化通用方法

/*** 时间工具类*//*** 获取现在的时间戳&#xff08;精确到s&#xff09;* 使用&#xff1a;new Date().nowTimestamp* type {number}*/Date.prototype.nowTimestamp Date.parse(new Date()) / 1000;/*** 时间戳转换成Date* 使用&#xff1a;new Date().timestampToDate(1493…

动态定时任务与动态生成class代码

动态定时任务 原理 采用定时任务线程池ThreadPoolTaskScheduler来实现定时任务。动态定时任务就是可以配置的&#xff0c;而不是写死在代码中。所以我们要将其写入到数据库中&#xff0c;然后暴露接口就可以进行配置比如创建、启动、结束任务。 数据库脚本 DROP TABLE IF EXIS…

docker登录mysql数据库_Docker下搭建mysql数据库

1.获取官方镜像&#xff1a;[rootCentos7 mysql]# docker pull mysql/mysql-server:latestlatest: Pulling from mysql/mysql-server1f5b026b07bc: Pull complete3d5697fc1304: Pull complete2747c84403db: Pull completedc0c445a852b: Pull completeDigest: sha256:7aba8c77f9…

LNMP与CA认证的童话故事

在前面的一篇博客中&#xff0c;我已经介绍过&#xff0c;如何通过源码编译安装LAMP&#xff0c;见教你源码编译制作LAMP详细过程 &#xff0c;这里就介绍下如何编译安装LNMP&#xff0c;以及如何在LNMP中添加ssl认证。LNMP&#xff0c;也叫做LEMP。L&#xff0c;即linux操作系…

web.config中配置字符串中特殊字符的处理

配置文件中往往要用到一些特殊的字符&#xff0c; Web.Config默认编码格式为UTF-8&#xff0c;对于XML文件&#xff0c;要用到实体转义码来替换。对应关系如下&#xff1a; 字符 转义码 & 符号&&amp;单引号&apos;双引号"&quot;大于>>…

Zabbix 最新版 5.2 版本源码安装

Zabbix 最新版 5.0 LTS 版本安装 zabbix 5.0 版本于 5 月 11 日正式发布&#xff0c;是最新的 LTS&#xff08;长期支持&#xff09;版本&#xff0c;5.0 带来很多功能和特性&#xff0c;后面会陆续推出文章介绍&#xff0c;下面主要介绍下 5.0 版本的安装。 环境要求 5.0 版…

【声卡驱动】安装realtek high definition audio后重启电脑被自动卸载替换成系统自带的realtek auto

解决步骤 先断网安装前先记录realtek auto的GUID&#xff0c;可以从设备管理器中事件中找到它&#xff0c;复制保留备用 安装 realtek high definition audio &#xff0c;重启&#xff08;断网&#xff09;在断网状态下&#xff0c;winr &#xff0c;输入gpedit.msc&#xff…

提问:访问服务器时提示system.componentmodel.win32exception: 拒绝访问

执行权限不够&#xff0c;在web.config添加&#xff1a; <identity impersonate"true" userName"系统用户名" password"密码"/>

丢失MySQL root 密码?

1 先停止掉 MYSQL 服务 /etc/init.d/mysqld stop 2 使用 mysqld_safe 安全登录 mysqld_safe --skip-grant-tables & 3 执行登录&#xff0c;修改密码等 mysql -u -root use mysql; update user set passwordpassword(your new password) where userroot; exit; 4 重新启动M…

mysql explain是什么意思_mysql explain的作用是什么?

mysql explain的作用是模拟Mysql优化器是如何执行SQL查询语句的&#xff0c;从而知道Mysql是如何处理用户的SQL语句&#xff0c;提高数据检索效率&#xff0c;降低数据库的IO成本。mysql explain的作用是&#xff1a;模拟Mysql优化器是如何执行SQL查询语句的&#xff0c;从而知…

d3.js 搭建 d3-force-directed-graph 例子

d3.js 搭建 d3-force-directed-graph 例子 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <script src&q…

js 创建快捷方式

代码 <script type"text/javascript"language"javascript">//创建快捷方式[浏览器设置要低,ff不支持]functioncreateShortcut() { varfso newActiveXObject("Scripting.FileSystemObject"); varshell newActiveXObject(&quo…

100c之23:两个平方数

<?xml version"1.0" encoding"utf-8"?> 100c之23&#xff1a;两个平方数100c之23&#xff1a;两个平方数 Table of Contents 1 问题2 分析3 解决方案4 结果1 问题 已知两个平方三位数abc和xyz&#xff0c;其中a,b,c,x,y,z未必是不同的;而 ax,by,cy…

OpenLDAP在linux上的部署和原理应用centos7

轻型目录访问协议&#xff08;英文&#xff1a;Lightweight Directory Access Protocol&#xff0c;缩写&#xff1a;LDAP&#xff09;是一个开放的&#xff0c;中立的&#xff0c;工业标准的应用协议&#xff0c;通过IP协议提供访问控制和维护分布式信息的目录信息。 OpenLDAP…

网页mysql命令大全_Mysql命令大全

| Monica Sehgal || Hal Simlai || Joseph Irvine |—————3 rows in set (0.00 sec)注意&#xff1a;这里用到CONCAT()函数&#xff0c;用来把字符串串接起来。另外&#xff0c;我们还用到以前学到的AS给结果列’CONCAT(f_name, ” “, l_name)’起了个假名。5.1 创建数据表…

c# 检测cpu使用率[测试通过]

创建一个控制台应用程序&#xff0c;代码如下 代码 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;//引用2命名空间usingSystem.Diagnostics;usingSystem.Threading;namespaceConsoleApplication1{ classProgram { staticvoidM…

mysql怎么修改表中的文字_mysql表中怎么修改字段?

在mysql表中&#xff0c;可以使用“ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;”语句来修改字段名称&#xff1b;使用“ALTER TABLE 表名 MODIFY 字段名 新数据类型;”语句来修改字段数据类型。修改字段名称MySQL 中修改表字段名的语法规则如下&#xff1a;ALTER TA…

select 查询例子集

ast1.查询没有折扣的商店a. use pubs SELECT stor_id AS "store id" ,stor_name AS "Store Name" FROM stores WHERE stor_id NOT IN (SELECT stor_id FROM discounts WHERE stor_id IS NOT NULL)b.SELECT stor_id AS "store id" ,stor_name AS …