Linux有很多很好的内存、IO调度机制,但是并不会适用于所有场景。

对于DBA来说Linux比较让人头疼的一个地方是,它不会因为MySQL很重要就避免将分配给MySQL的地址空间映射到swap上。对于频繁进行读写操作的系统而言,数据看似在内存而实际上在磁盘是非常糟糕的,响应时间的增长很可能直接拖垮整个系统。这篇blog主要讲讲我们作为DBA,怎样尽量避免MySQL惨遭swap的毒手。 首先我们要了解点基础的东西,比如说为什么会产生swap。假设我们的物理内存是16G,swap是4G。如果MySQL本身已经占用了12G物理内存,而同时其他程序或者系统模块又需要6G内存,这时候操作系统就可能把MySQL所拥有的一部分地址空间映射到swap上去。 cp一个大文件,或用mysqldump导出一个很大的数据库的时候,文件系统往往会向Linux申请大量的内存作为cache,一不小心就会导致L使用swap。

这个情景比较常见,以下是最简单的三个调整方法:

1、/proc/sys/vm/swappiness的内容改成0(临时),/etc/sysctl.conf上添加vm.swappiness=0(永久) 这个参数决定了Linux是倾向于使用swap,还是倾向于释放文件系统cache。在内存紧张的情况下,数值越低越倾向于释放文件系统cache。 当然,这个参数只能减少使用swap的概率,并不能避免Linux使用swap。

2、修改MySQL的配置参数innodb_flush_method,开启O_DIRECT模式。 这种情况下,InnoDB的buffer pool会直接绕过文件系统cache来访问磁盘,但是redo log依旧会使用文件系统cache。值得注意的是,Redo log是覆写模式的,即使使用了文件系统的cache,也不会占用太多。

3、添加MySQL的配置参数memlock 这个参数会强迫mysqld进程的地址空间一直被锁定在物理内存上,对于os来说是非常霸道的一个要求。必须要用root帐号来启动MySQL才能生效。 还有一个比较复杂的方法,指定MySQL使用大页内存(Large Page)。Linux上的大页内存是不会被换出物理内存的,和memlock有异曲同工之妙。具体的配置方法可以参考:http://harrison-fisk.blogspot.co ... pages-on-linux.html

mysql 禁用swap_MySQL如何避免使用swap相关推荐

  1. mysql+使用swap_MySQL避免使用SWAP

    当物理内存的数量不能容纳数据的时候,os会把虚拟内存中的数据写到磁盘上,此时的交换对于运行在操作系统中的进程是透明的. 交换对与MySQL性能有很大的影响,对于Innodb存储引擎它对内存中的数据锁住 ...

  2. 内存不足导致mysql关闭,CentOS6.5增加swap分区

    某日发现mysql自动关闭了,查找错误日志发现以下错误 2017-07-14 13:07:30 5494 [Note] InnoDB: Initializing buffer pool, size = ...

  3. mysql 禁用查询缓存 query cache

    os:centos 6.8 mysql: 5.5.49 MySQL Query Cache 会缓存select 查询,但是在调优sql查询及测试数据库的性能时需要禁用该功能. 查看变量.状态 mysq ...

  4. 树莓派禁用SD卡上的swap交换空间

    对于Kubernetes 1.7和更新版本,如果启用了交换空间,将会出现错误.禁用swap的步骤: sudo dphys-swapfile swapoff sudo dphys-swapfile un ...

  5. mysql 禁用事件_mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作详解...

    本文实例讲述了mysql事件之修改事件(ALTER EVENT).禁用事件(DISABLE).启用事件(ENABLE).事件重命名及数据库事件迁移操作.分享给大家供大家参考,具体如下: 我们要知道,M ...

  6. mysql 禁用ipv6_linux配置禁用启用IPv6

    IPv6被认为是IPv4的替代产品,它用来解决现有IPv4地址空间即将耗尽的问题. 但目前,开启IPv6可能会导致一些问题.因此有时我们需要关闭IPv6. 下面是IPv6的关闭方法应该适用于所有主流的 ...

  7. mysql 禁用validate,mysql5.7禁用validate-password插件

    mysql5.7 以上的密码安全性增加了不少,但有时测试时不需要这么复杂,怎么办呢?linux 下操作方法如下步骤: 方法一[修改强度和密码]: 首先,修改validate_password_poli ...

  8. java连接mysql禁用ssl_java - 连接到MySQL数据库时有关SSL连接的警告

    java - 连接到MySQL数据库时有关SSL连接的警告 通过以下两个类,我尝试连接到MySQL数据库. 但是,我总是得到这个错误: Wed Dec 09 22:46:52 CET 2015 WAR ...

  9. mysql 禁用ssl连接_MySQL建立SSL连接问题,设置useSSL=false显式禁用SSL,或者设置useSSL=true...

    You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide tr ...

最新文章

  1. JAVA按钮设置组合快捷键
  2. java工程中的.classpathaaaaaaaaaaaaaaaa转载
  3. yarn install 遇到的错误消息 - Error EPERM operation not permitted, open .yarnrc
  4. mongdb 群集_群集文档的文本摘要
  5. 单例模式小记【原创】
  6. python的课程ppt_第4课 初识Python复习课程.ppt
  7. RocketMQ 常见面试题
  8. pat乙级相当于什么水平_英语四六级/专四/专八相当于美国人什么水平?
  9. 关联规则java apriori_关联规则算法(The Apriori algorithm)详解
  10. 浅谈jQuery宽高及其应用
  11. Cmake构建_设置debug与release不同名字
  12. inux中tail命令---用于查看文件内容
  13. 讲python现状的文章_用 Python 分析 Python 工作现状
  14. VSCode下载安装和修改插件下载位置(配置右键菜单)
  15. 微信小程序获取屏幕高度
  16. Linux 时间戳获取及转换
  17. ArcGIS技巧】下载偏移影像后纠偏操作
  18. 资产初探:信贷资产流转业务及其与资产证券化的区别
  19. SQL语句集锦 [转]
  20. jquery实现最美照片背景色插件

热门文章

  1. 计算机学院刘彤,刘彤-北京航空航天大学材料科学与工程学院
  2. windows系统bat批处理 bat脚本默认拥有管理员权限
  3. android listview 只加载显示的图片大小,Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)...
  4. nginx强制刷新用户缓存_HTTP 缓存
  5. c语言string函数的用法_C语言基础| 指针和函数
  6. sql重复数据只保留一条_一条SQL完成跨数据库实例Join查询
  7. java main函数_Java经典面试题集锦
  8. rsa加密算法_cryptography---RSA算法
  9. 东南大学微型计算机期末,12级东南大学微机期中试卷
  10. php判断是字符串类型,php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创...