当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL数据库部署linux参数调整

MySQL数据库部署linux参数调整

2020年07月21日  | 移动技术网IT编程  | 我要评论

MySQL数据库部署linux参数调整

概述

为了使MySQL数据库获得最佳性能,需要正确定义操作系统参数。如果操作系统内核参数配置不当,可能会导致数据库服务器性能下降。因此,必须根据数据库服务器及其工作负载配置这些参数。主要是指在Linux系统中针对业务服务应用而进行的系统内核参数调整。

一 操作系统选项

基本系统中的兼容程序库一定打开,继承UNIX兼容性一定打上。数据库全部取消。系统管理-系统管理选择上桌面都选择上不能选择(KDE桌面-因为和通用桌面有冲突)-应用程序把浏览器选择上。开发全选。语言把中文和英文都选择上。

1.1 设置本地yum源

[root@localhost yum.repos.d]# cat /etc/yum.repos.d/iso.repo

[iso6.9]

name=iso6.9

baseurl=file:///iso6.9

gpgcheck=0

enabled=1

1.2 修改selinux

SELINUX=disabled

[root@localhost yum.repos.d]# setenforce 0

[root@localhost yum.repos.d]# getenforce

Permissive

echo "192.168.198.134 mysql5.7" >>/etc/hosts

 

 

 

二 数据库关心的OS内核参数

2.1 关闭numa

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

 

MySQL服务器为什么需要关闭numa?

MySQL是单进程多线程架构数据库,当numa采用默认内存分配策略时,MySQL进程会被并且仅仅会被分配到numa的一个节点上去。假设这个节点的本地内存为10GB,而MySQL配置20GB内存,超出节点本地内存部分(20GB-10GB)Linux会使用swap而不是使用其他节点的物理内存。在这种情况下,能观察到虽然系统总的可用内存还未用完,但是MySQL进程已经开始在使用swap了。

在/etc/grub.conf的kernel一行后添加了numa=off,重启服务器后果然问题被解决。

2.2 I0调度算法与I0优化

Linux I/O 调度器是Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能。本文首先介绍Linux I/O 调度器的结构,然后介绍如何根据不同的存储器来设置Linux I/O 调度器从而达到优化系统性能。

CFQ完全公平队列,比较适合于交互式场景     

Deadline 最后期限,任何一个读写请求,都有自己的满足期限,当期限到来时之前,必须达到需求的满足(一般建议在数据库服务器上使用此调度算法)

anticpatory 预期的,任何一个数据读完之后,有可能与其相邻的数据也可能被读到,所以它大致所实现的方法就是,读完之后先不满足,则不处理,需等一段时间后查看是否有相近数据访问过,如果有马上先满足,所以这只能在行为预估的场景下可用

Noop 固态硬盘 推荐使用

 

查看当前系统支持的I/O调度器

dmesg | grep -i scheduler

 

--I0调度算法

cat /sys/block/sd*/queue/ scheduler

--sas/stat

echo ' deadline' > /sys/block/sd*/queue/scheduler

-- ssd

echo 'N0OP' > /sys/block/sd*/queue/scheduler

--减少预读

echo '16' > /sys/block/sd* /queue/read_ahead_kb

--增大队列

echo '512' > /sys/block/sd*/queue /nr_requests

--开启后生效

vi /etc/rc.local

echo '512' > /sys/block/ sdb/queue/nr_requests

echo '512' > /sys/block/ sdc/ queue/nr_requests

2.3 虚拟内存与保留内存

内核参数vm.swappiness控制换出运行时内存的相对权重,参数值大小对如何使用swap分区有很大联系。值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。默认值swappiness=60,表示内存使用率超过100-60=40%时开始使用交换分区。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间;swappiness=100的时候表示积极使用swap分区,并把内存上的数据及时搬运到swap空间。(网上有的说,对于3.5以后的内核和RedHat 2.6.32之后的内核,设置为0会禁止使用swap,从而引发out of memory,这种情况可以设置为1。)

 

需要根据服务器运行的程序类型,来设置不同的参数值。例如,对于Oracle一般设置为10;对于MySQL一般设置为1,尽可能不用swap分区。

vim /etc/sysctl. conf

vm.swappiness=10

vm.min_free_kbytes=51200

#vm.min_free_kbytes= 512000 -- 生产环境

 

 

三 资源限制

linux资源限制配置文件是/etc/security/limits.conf;限制用户进程的数量对于linux系统的稳定性非常重要。limits.conf文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。/etc/security/limits.conf 配置文件可限制文件打开数,系统进程等资源,在/etc/security/limits.d/90-nproc.conf文件配置中写的最大用户进程数是受配置上限影响的。

ulimit -a   是所有显示的资源
 

vim /etc/security/limits.conf 

  noproc 是代表最大进程数
   nofile 是代表最大文件打开数 

stack - max stack size (KB) 最大栈大小

* soft nproc 65535

* hard nproc 65535

* soft nofile 65535

* hard nofile 65535

* soft stack 65535

* hard stack 65535

vim /etc/security/limits.d/90-nproc.conf

*               -       nproc         65535

所有用户   soft/hard

本文地址:https://blog.csdn.net/syjhct/article/details/107450638

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网