在LINUX平台配置 MSYQL 支持大页内存
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,操作系统:[root@oradb ~]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 6.4 (Santiago)数据
千家信息网最后更新 2025年11月06日在LINUX平台配置 MSYQL 支持大页内存操作系统:
[root@oradb ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)
数据库:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.27 |
+-----------+
1 row in set (0.00 sec)
在这个测试中我们设置400MB的大页内存给 MYSQL使用
1. 关闭匿名大页内存
下面的命令输出为 [always] 表示开启匿名大页内存,需要关闭
[root@oradb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] never
在 /boot/grub/grub.conf 文件中添加 transparent_hugepage=never 禁止匿名大页内存
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=bfd79be7-6446-4864-bc1f-ad15d4b242ad rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet transparent_hugepage=never
initrd /initramfs-2.6.32-358.el6.x86_64.img
重启操作系统,然后检查是否禁止了匿名大页
[root@oradb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always [never] # 已经成功禁止匿名大页内存
[root@oradb ~]# cat /proc/meminfo | grep -i huge
AnonHugePages: 0 kB # AnonHugePages 为零,表示已经成功禁止了匿名大页内存
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB # 大页内存的页面大小是2MB
2. 在内核参数中配置400MB的大页内存
# vi /etc/sysctl.conf
# config hugepages
# vm.nr_hugepages = MYSQL需要使用的内存 / 大页的页面大小 = 400/2=200
vm.nr_hugepages=200
vm.hugetlb_shm_group=507 # 507是MYSQL所属组ID
[root@oradb ~]# sysctl -a |grep shmmax
kernel.shmmax = 68719476736
[root@oradb ~]# sysctl -a |grep shmall
kernel.shmall = 4294967296
操作系统默认已经设置 kernel.shmmax=64GB,kernel.shmall=4GB,已经超过我们
需要的内存量(400MB)所以不需要调整这两个参数。
3.重新加 LINUX 载内核参数
sysctl -p
4. 设置 MYSQL用户限制内存锁定400MB
vi /etc/security/limits.conf
mysql soft memlock 409600 #单位为KB,我们配置的是MYSQL用户限制内存锁定400MB
mysql hard memlock 409600
5. 配置MYSQL启用大页内存
[mysqld]
large-pages
6. 启动MYSQL
/app/oracle/oradata2/mysql-5.6.27/bin/mysqld_safe --defaults-file=/app/oracle/oradata2/mysql-5.6.27/my.cnf --user=mysql &
检查已经使用了大页内存
[root@oradb mysql-5.6.27]# cat /proc/meminfo | grep -i huge
AnonHugePages: 0 kB
HugePages_Total: 200
HugePages_Free: 197
HugePages_Rsvd: 67
HugePages_Surp: 0
Hugepagesize: 2048 kB
HugePages_Total为所分配的页面数目,和Hugepagesize相乘后得到所分配的内存大小。200*2/1024大约为200MB。
HugePages_Free为从来没有被使用过的Hugepages数目。即使 MYSQL INNDOB 缓冲池已经分配了这部分内存,但是如果没有实际写入,
那么看到的还是Free的。这是很容易误解的地方。
HugePages_Rsvd为已经被分配预留但是还没有使用的page数目。在 MYSQL 刚刚启动时,大部分内存应该都是Reserved并且Free的,随着
INNDOB 缓冲池的使用,Reserved和Free都会不断的降低。
HugePages_Free - HugePages_Rsvd 这部分是没有被使用到的内存,如果没有其他的 MYSQL实例,这部分内存也许永远都不会被使用到,也就是被浪费了。
在这个测试中没有使用的大页内存是 197-67=130*2=260MB。
[root@oradb ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)
数据库:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.27 |
+-----------+
1 row in set (0.00 sec)
在这个测试中我们设置400MB的大页内存给 MYSQL使用
1. 关闭匿名大页内存
下面的命令输出为 [always] 表示开启匿名大页内存,需要关闭
[root@oradb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] never
在 /boot/grub/grub.conf 文件中添加 transparent_hugepage=never 禁止匿名大页内存
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=bfd79be7-6446-4864-bc1f-ad15d4b242ad rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet transparent_hugepage=never
initrd /initramfs-2.6.32-358.el6.x86_64.img
重启操作系统,然后检查是否禁止了匿名大页
[root@oradb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always [never] # 已经成功禁止匿名大页内存
[root@oradb ~]# cat /proc/meminfo | grep -i huge
AnonHugePages: 0 kB # AnonHugePages 为零,表示已经成功禁止了匿名大页内存
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB # 大页内存的页面大小是2MB
2. 在内核参数中配置400MB的大页内存
# vi /etc/sysctl.conf
# config hugepages
# vm.nr_hugepages = MYSQL需要使用的内存 / 大页的页面大小 = 400/2=200
vm.nr_hugepages=200
vm.hugetlb_shm_group=507 # 507是MYSQL所属组ID
[root@oradb ~]# sysctl -a |grep shmmax
kernel.shmmax = 68719476736
[root@oradb ~]# sysctl -a |grep shmall
kernel.shmall = 4294967296
操作系统默认已经设置 kernel.shmmax=64GB,kernel.shmall=4GB,已经超过我们
需要的内存量(400MB)所以不需要调整这两个参数。
3.重新加 LINUX 载内核参数
sysctl -p
4. 设置 MYSQL用户限制内存锁定400MB
vi /etc/security/limits.conf
mysql soft memlock 409600 #单位为KB,我们配置的是MYSQL用户限制内存锁定400MB
mysql hard memlock 409600
5. 配置MYSQL启用大页内存
[mysqld]
large-pages
6. 启动MYSQL
/app/oracle/oradata2/mysql-5.6.27/bin/mysqld_safe --defaults-file=/app/oracle/oradata2/mysql-5.6.27/my.cnf --user=mysql &
检查已经使用了大页内存
[root@oradb mysql-5.6.27]# cat /proc/meminfo | grep -i huge
AnonHugePages: 0 kB
HugePages_Total: 200
HugePages_Free: 197
HugePages_Rsvd: 67
HugePages_Surp: 0
Hugepagesize: 2048 kB
HugePages_Total为所分配的页面数目,和Hugepagesize相乘后得到所分配的内存大小。200*2/1024大约为200MB。
HugePages_Free为从来没有被使用过的Hugepages数目。即使 MYSQL INNDOB 缓冲池已经分配了这部分内存,但是如果没有实际写入,
那么看到的还是Free的。这是很容易误解的地方。
HugePages_Rsvd为已经被分配预留但是还没有使用的page数目。在 MYSQL 刚刚启动时,大部分内存应该都是Reserved并且Free的,随着
INNDOB 缓冲池的使用,Reserved和Free都会不断的降低。
HugePages_Free - HugePages_Rsvd 这部分是没有被使用到的内存,如果没有其他的 MYSQL实例,这部分内存也许永远都不会被使用到,也就是被浪费了。
在这个测试中没有使用的大页内存是 197-67=130*2=260MB。
内存
分配
配置
操作系统
参数
大小
数目
系统
页面
成功
内核
用户
检查
测试
缓冲
限制
不断
两个
也就是
单位
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
PDB数据库下载单链结构
专科软件开发招聘
网络安全管理演练情况
深圳酷盈分销软件开发
湖北浪潮服务器虚拟化部署
网络安全工程师考试官网
xp系统怎么查找数据库
山东星澜网络技术有限公司
汉中第六届网络安全宣传周
关系数据库中列的范围
河北开源软件开发哪家好
剑灵大区服务器查询
随着网络技术进步
人渣单机服务器设置翻译
大疆飞行安全数据库更新卡住
甲状腺在getx数据库中吗
网易云我的世界服务器
网络安全中的加密算法
adel门锁清除芯片数据库
高并发单机数据库
怎么样游戏软件开发
虚拟服务器 手机
安徽服务器报废公司哪家好
网络安全的利与弊的手抄报
软件开发进度付款
网络安全小学主题班会教案
多投影仪拼接软件开发
4g软件开发工程师
信息网络技术包括什么
社保基金网络安全论文