欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL数据库部署linux参数调整

程序员文章站 2022-03-07 11:38:13
MySQL数据库部署linux参数调整概述为了使MySQL数据库获得最佳性能,需要正确定义操作系统参数。如果操作系统内核参数配置不当,可能会导致数据库服务器性能下降。因此,必须根据数据库服务器及其工作负载配置这些参数。主要是指在Linux系统中针对业务服务应用而进行的系统内核参数调整。一 操作系统选项基本系统中的兼容程序库一定打开,继承UNIX兼容性一定打上。数据库全部取消。系统管理-系统管理选择上桌面都选择上不能选择(KDE桌面-因为和通用桌面有冲突)-应用程序把浏览器选择上。开发全选。语...

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

相关标签: MySQL