广告
返回顶部
首页 > 资讯 > 数据库 >设置MySQL磁盘IO的详细步骤
  • 891
分享到

设置MySQL磁盘IO的详细步骤

2024-04-02 19:04:59 891人浏览 安东尼
摘要

下面一起来了解下设置Mysql磁盘io的详细步骤,相信大家看完肯定会受益匪浅,文字在精不在多,希望设置mysql磁盘IO的详细步骤这篇短内容是你想要的。1、RaiD卡设置 关闭读cache:RAID卡上的c

下面一起来了解下设置Mysql磁盘io的详细步骤,相信大家看完肯定会受益匪浅,文字在精不在多,希望设置mysql磁盘IO的详细步骤这篇短内容是你想要的。

1、RaiD卡设置

关闭读cache:RAID卡上的cache容量有限,我们选择direct方式读取数据,从而忽略读cache。

关闭预读:RAID卡的预读功能对于随机IO几乎没有任何提升,所以将预读功能关闭。

关闭磁盘cache:一般情况下,如果使用RAID,系统会默认关闭磁盘的cache,也可以用命令强制关闭。

以上设置都可以通过RAID卡的命令行来完成,比如LSI芯片的RAID卡使用megacli命令。


2、禁止操作系统更新文件的atime属性

# vim /etc/fstab,将mysql数据文件存放的分区加上noatime挂载属性即可,类似如下:

UUID=ccbb4c85-32ff-4b8d-ae58-f39569b67d96 /data   ext4  defaults,noatime  1 2

# mount -o remount,noatime /data

# 查看设备UUID的命令: blkid /dev/sdb1  


3、使用裸设备存放InnoDB的共享表空间 (目前很少这么用了,直接用SSD)

vim my.cnf如下:

[mysqld]

innodb_data_home_dir=

innodb_data_file_path=/dev/hdd1:3Gnewraw;/dev/hdd2:2Gnewraw

然后启动MySQL服务,让其自动完成分区的初始化,然后关闭MySQL。此时还不能创建或修改InnoDB表。

将my.cnf的文件继续修改下:

[mysqld]

innodb_data_home_dir=

innodb_data_file_path=/dev/hdd1:3Graw;/dev/hdd2:2Graw

然后重启MySQL服务,即可使用。


4、关注RAID卡的BBWC (Battery Backed Write Cache 电池充放电)问题

RAID卡上自带的电池会定期的充放电以进行电池校准。

每次充放电时间差不多3小时,期间RAID卡从数据安全角度考虑会自动禁用write back改为Write Through策略,这样的话系统IO性能会出现较大的波动。这很大几率会影响到MySQL的性能。

可以使用MegaCli64来查看和设置RAID卡缓存策略。如下:

# MegaCli64 -LDInfo -Lall -aALL 可以看到CurrentCache Policy 即当前的缓存策略。

我们可以临时修改RAID卡策略,在电池充放电期间强制使用Write Cache OK if Bad BBU策略,等充放电完成后,再将其恢复成No Write Cache if Bad BBU,避免断电可能导致的数据丢失。

另外,我们可以在业务低谷时候形象充放电操作,避免在业务高峰发生RAID卡充放电的执行。我们可以从BBU电池的日志中找到下次电池reclean的时间:

# MegaCli64 -fwtermlog -dsply -a0 -nolog

或# MegaCli64 -AdpBbuCmd -GetBbuProperties -aall

也可以手动触发电池的reclean操作:MegaCli64 -AdpBbuCmd -BbuLearn -aAll


5、调整磁盘IO调度算法

IO请求合并能减少磁盘寻道的次数。对于相邻山区的访问通过合并处理,对于非相邻扇区的访问则通过排序处理。

linux下实现了4种IO调度算法。NOOP、最后期限算法Deadline、完全公平队列算法CFQ、预期算法Anticipatory

2.6.17内核版本以后,系统默认是CFQ算法。

根据理论(这里略过,需要了解的看《深入浅出MySQL》Page371),有如下结论:

1、在完全随机的访问环境下,CFQ和Deadline性能差异很小,但是在有大的连续IO出现的情况下,CFQ可能会造成小IO的响应延时增加,所以建议MySQL云服务器设置为Deadline。

2、对于SSD设备,采用NOOP或Deadline通常可能获取到比默认更好的性能。

修改磁盘IO调度算法的方法: 

# dmesg|grep -i scheduler   查看到系统支持的IO调度算法【默认是noop anticipatory deadline [cfq]】

# more /sys/block/sda/queue/scheduler 查看当前使用的调度算法

# echo 'deadline' > /sys/block/sda/queue/scheduler  修改后立即生效【临时生效】

# vim /etc/grub.conf 在kernel行的末尾添加elevator=deadline   重启即可永久生效


6、NUMA架构优化

常用云服务器大体分为3类:

SMP 对称多处理器结构

NUMA 非一致性内存访问结构

MPP 海量并行处理结构

SMP主要的特征就是共享,系统中所有的资源资源都是共享的,导致SMP云服务器的扩展能力非常有限。由于每个CPU都要通过相同的总线访问相同的内存资源,如果两个CPU同时请求访问同一个内存资源(如同一段内存地址),就会产生资源争用的问题。CPU越多这种情况出现的概率就越大。

NUMA把一台计算机分成多个节点nodes,每个节点内部拥有多个CPU,节点内部使用共有的内存控制器,节点之间是通过互联模块进行连接和信息交互。节点的所有内存对于本节点所有的CPU都是等同的,而对于其他节点中的所有CPU都是不同的。每个CPU可以访问整个系统内存,但是访问本地节点的内存较快,访问非本地节点的内存较慢(要经过互联模块),即CPU访问内存的速度和节点的距离有关,距离称为Node Distance。

[root@posp-linux ~]# nuMactl --hardware

available: 2 nodes (0-1)

node 0 cpus: 0 1 2 3 4 5 12 13 14 15 16 17

node 0 size: 16349 MB

node 0 free: 2654 MB

node 1 cpus: 6 7 8 9 10 11 18 19 20 21 22 23

node 1 size: 16383 MB

node 1 free: 6079 MB

node distances:

node   0   1 

 0:  10  20 

 1:  20  10 

[root@posp-linux ~]# free -m

            total       used       free     shared    buffers     cached

Mem:         32068      23335       8733          1        679      18982

-/+ buffers/cache:       3673      28395

Swap:        12137         88      12049

上图可以看到有2个node,每个node的内存为16GB。上面的node distance中节点本地内存声明距离为10,非本地节点内存声明距离为20。

NUMA的内存分配策略有4种:

缺省 default 总是在本地节点分配(分配在当前进程运行的节点上)

绑定 bind     强制分配到指定节点上

交叉 interleave 在所有节点或指定节点上交叉分配内存

优先 preferred  在指定节点上分配,失败则在其他节点上分配

[root@posp-linux ~]# numactl --show  显示当前系统的NUMA策略

policy: default

preferred node: current

physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 

cpubind: 0 1 

nodebind: 0 1 

membind: 0 1

默认的default策略是优先在进程所在CPU的本地内存中分配,会导致CPU节点之间内存分配不均衡,当某个CPU节点内存不足时,会导致swap产生,而不是从远程节点分配内存,这就是swap insanity现象。

MySQL是单进程多线程的架构。当NUMA采用默认default的分配策略时,MySQL进程会被并且仅被分配到NUMA的一个节点上去。假设MySQL配置的14G内存超过了这个节点的本地8G内存,这种情况下Linux宁愿使用Swap也不会去瓜分其他节点的物理内存。这就导致一个问题:虽然free -m看上去还有内存可用,但是实际上MySQL进程已经开始使用到Swap了。

MySQL对NUMA的支持不太好,如果单机只运行的MySQL的话,建议关闭NUMA。方法如下:

# vim /etc/grub.conf 在kernel最后加上numa=off

保存后,重启云服务器即可。

关闭后,类似下面的样子:

[root@node1 ~]# numactl --show

policy: default

preferred node: current

physcpubind: 0 1 2 3 

cpubind: 0 

nodebind: 0 

membind: 0

或者通过numactl修改NUMA分配策略为interleave也行!!!

如果单机运行多个MySQL实例,我们可以将MySQL绑定在不同的CPU节点上,并且采用绑定的内存分配策略,强制在本节点内分配内存,这样既可以充分利用硬件的NUMA特性,又避免了单实例MySQL对多核CPU利用率不高的问题。

7、文件系统设置

挂载时候可以不记录时间:

defaults,noatime,nodiratime 

补充:挂载时候使用 noatime,nodiratime 选项的问题

未指定"noatime,nodiratime"的情况下:

read文件的时候会导致atime更新,不会导致mtime和ctime更新

write文件只会导致mtime和ctime更新,不会导致atime更新。

说明:当以noatime选项加载(mount)文件系统时,对文件的读取不会更新文件属性中的atime信息。设置noatime的重要性是消除了文件系统对文件的写操作,文件只是简单地被系统读取。

在平日里经常有删除文件的需求,大概如下:

删除过去N天内都未访问过的文件或者目录(删除N天前访问过的文件)

    # 注意这条命令很危险! 

#  find /home/fire/ -atime +N -exec rm -rf {} \;

假设 /home/fire 目录是一周之前创建的,那么对于这条命令有两个执行结果:

# find /home/fire/ -atime +7 -exec rm -rf {} \;

指定"noatime":find的时候发现 /home/fire 是7天之前创建的,立马就会删除整个目录。而且还会报错"find: /home/fire: No such file or directory",原因就是第一个rm -rf /home/fire 之后 find失败了。这种是很危险的!原因是会误删除文件。

未指定"noatime":那就得看情况,如果/home/fire过去7天没有被访问过,那么就和情况一一样,直接删除。

如果过去7天内,该目录有人访问过,atime肯定是7天之内,那么就会遍历下面的目录,依次按照之前逻辑。但是遍历过程会更改目录的atime。

看了上面的例子会发现find去删除目录的时候变得好复杂,而且一定要小心。所以find删除更适用于删除文件,不要删除目录。

启用noatime的时候,删除N天内未被访问过的文件的方法:

#  find /home/fire/ -atime +N -type f -exec rm -f {} \;

看完设置MySQL磁盘IO的详细步骤这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的数据库栏目。

您可能感兴趣的文档:

--结束END--

本文标题: 设置MySQL磁盘IO的详细步骤

本文链接: https://www.lsjlt.com/news/34653.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 设置MySQL磁盘IO的详细步骤
    下面一起来了解下设置MySQL磁盘IO的详细步骤,相信大家看完肯定会受益匪浅,文字在精不在多,希望设置MySQL磁盘IO的详细步骤这篇短内容是你想要的。1、RAID卡设置 关闭读cache:RAID卡上的c...
    99+
    2022-10-18
  • Linux里LVM磁盘扩容详细步骤
    1、添加一块硬盘 2、查看分区情况:fdisk -l 3、设置分区: fdisk /dev/sdb 回车 m 回车 n 回车 p 回车 w 回车 4、再次查看分区:fdisk /dev/sdb 回车 t 回车 3 回...
    99+
    2022-06-04
    Linux下LVM磁盘扩容 Linux磁盘扩容lvm
  • 最新WindowsServer2012R2磁盘分区的详细步骤
    目录一、问题——只有一个磁盘二、新建磁盘分区1.这台电脑——右键——管理2.工具——计...
    99+
    2022-11-13
  • 配置MySQL Replication的详细步骤
    不知道大家之前对类似配置MySQL Replication的详细步骤的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完配置MySQL Replication的详细步骤...
    99+
    2022-10-18
  • Mysql双主配置的详细步骤
    目录前言一、mysql配置文件(1)节点A配置(2)节点B配置二、配置节点A为节点B的master(主从模式)三、完成双主配置四、测试五、控制同步的库或表六、一个账号多个IP总结前言 特点:在双主配置中,两台mysql互...
    99+
    2022-06-23
    mysql双主双从怎么配置 mysql双主特色 Mysql双主
  • Mysql主从配置详细步骤
    下文主要给大家带来Mysql主从配置详细步骤,希望这些内容能够带给大家实际用处,这也是我编辑Mysql主从配置详细步骤这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。环境:系统版本:centos6....
    99+
    2022-10-18
  • windows安装MySQL到D盘的超详细步骤
    目录步骤1、下载MySQL2、在非c盘创建文件夹3、双击刚刚下载的内容重点来了!如何转到别的盘的重点!端口号没必要变,如果你变了,请记住!重要!设置自己的账户和密码。我这里账户和密码...
    99+
    2023-03-24
    mysql安装到d盘教程 mysql能装d盘吗 mysql怎么从c盘导到d盘
  • 阿里云服务器升级磁盘驱动的详细步骤
    本文将详细解释如何在阿里云服务器上升级磁盘驱动。阿里云服务器是一种基于虚拟化技术的云计算服务,可以提供弹性的计算资源和存储服务。在使用过程中,如果磁盘驱动出现问题,可能会影响服务器的性能和稳定性。因此,定期检查和升级磁盘驱动是非常重要的。本...
    99+
    2023-11-03
    阿里 磁盘 步骤
  • 阿里云服务器监控磁盘位置详细步骤与功能解析
    随着云计算的发展,越来越多的企业和个人开始使用阿里云服务器进行在线应用的运行和数据存储。但是,对于阿里云服务器的磁盘管理,可能并不是每个用户都熟悉。这篇文章将详细介绍阿里云服务器监控磁盘的位置,以及如何通过阿里云的管理控制台进行磁盘使用情况...
    99+
    2023-10-30
    阿里 磁盘 步骤
  • 硬盘安装ubuntu12.04的详细步骤
    这篇文章主要介绍“硬盘安装ubuntu12.04的详细步骤”,在日常操作中,相信很多人在硬盘安装ubuntu12.04的详细步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”硬盘安装ubuntu12.04的详...
    99+
    2023-06-13
  • linux设置iptables防火墙的详细步骤
    本篇内容介绍了“linux设置iptables防火墙的详细步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先简单介绍一下什么是IPTab...
    99+
    2023-06-10
  • 设置redis开机启动的详细步骤
    今天小编给大家分享的是设置redis开机启动的详细步骤,相信很多人都不太了解,为了让大家更加了解redis开机启动的详细步骤,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。redis设置开机启...
    99+
    2022-10-18
  • mysql建表的详细步骤
    本文主要给大家简单讲讲mysql建表的详细步骤,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql建表的详细步骤这篇文章可以给大家带来一些实际帮助。1....
    99+
    2022-10-18
  • 部署MySQL的详细步骤
    本篇内容主要讲解“部署MySQL的详细步骤”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“部署MySQL的详细步骤”吧! 1.新建配...
    99+
    2022-10-18
  • 阿里云服务器格式磁盘清空文件的详细步骤
    阿里云服务器是一种基于云计算的计算服务,用户可以根据需要灵活地使用云服务器的计算能力。但是,在使用过程中,用户可能会遇到需要格式化磁盘清空文件的情况。本文将详细说明阿里云服务器格式磁盘清空文件的具体步骤。 登录阿里云控制台首先,你需要登录阿...
    99+
    2023-12-16
    阿里 磁盘 清空
  • win7设置鼠标灵敏度的详细步骤
      Win7操作系统是很多用户都非常喜欢的操作系统。而鼠标的灵敏度关系着我们的操作是否流畅,最近就有用户问小编win7如何设置鼠标灵敏度,那么今天小编就来教教大家win7设置鼠标灵敏度怎么操作。下面就让我们一起来看看吧!  win7设置鼠标...
    99+
    2023-07-12
  • Mac上安装Mysql的详细步骤及配置
    MAC 安装mysql 有许多开发的小伙伴,使用的是mac,那么在mac上如何安装Mysql呢?这篇文章就给大家说说。 1、首先,登陆Mysql的 官网: https://www.mysql.com/downloads/...
    99+
    2023-02-09
    mac安装mysql 苹果mysql安装教程 mac mysql使用
  • 安装及配置mysql的详细步骤介绍
    下文给大家带来关于安装及配置mysql的详细步骤,感兴趣的话就一起来看看这篇文章吧,相信看完安装及配置mysql的详细步骤对大家多少有点帮助吧。一:安装mysql1.在web云服务器上安装mysql:yum...
    99+
    2022-10-18
  • 多机配置mysql数据库的详细步骤
    下面讲讲关于多机配置mysql数据库的详细步骤,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完多机配置mysql数据库的详细步骤这篇文章你一定会有所受益。一主多从配置环境:&nb...
    99+
    2022-10-18
  • mysql安装及配置步骤详细介绍
    本文主要给大家简单讲讲mysql安装及配置步骤,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql安装及配置步骤这篇文章可以给大家带来一些实际帮助。My...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作