当前位置: 首页 > news >正文

mysql优化升级

1. 调整 InnoDB 日志文件大小 (innodb_log_file_size)

  • 当前值: 48MB
  • 建议: 增加 innodb_log_file_size 的值至 256MB 或 512MB。更大的日志文件大小可以减少日志切换的频率,从而减少磁盘写入的负载。
  • 操作步骤:
    1. 停止MySQL服务:
      sudo systemctl stop mysqld
      
    2. 编辑MySQL配置文件 my.cnf
      [mysqld]
      innodb_log_file_size=512M
      
    3. 删除旧的日志文件(谨慎操作,确保备份数据):
      rm /var/lib/mysql/ib_logfile*
      
    4. 重启MySQL服务:
      sudo systemctl start mysqld
      

2. 调整同步二进制日志 (sync_binlog)

  • 当前值: 1
  • 建议: 将 sync_binlog 值调整为 10 或 100,以减少每次事务提交时的磁盘同步频率,从而降低磁盘写入压力。
  • 操作步骤:
    1. 编辑MySQL配置文件 my.cnf
      [mysqld]
      sync_binlog=100
      
    2. 重启MySQL服务以应用更改:
      sudo systemctl restart mysqld
      

3. 优化 InnoDB 日志缓冲区大小 (innodb_log_buffer_size)

  • 当前值: 16MB
  • 建议: 增加 innodb_log_buffer_size64MB 或更高,以减少频繁的日志缓冲区刷新次数。
  • 操作步骤:
    1. 编辑MySQL配置文件 my.cnf
      [mysqld]
      innodb_log_buffer_size=64M
      
    2. 重启MySQL服务以应用更改:
      sudo systemctl restart mysqld
      

4. 定期清理二进制日志

  • 背景: 启用二进制日志会产生大量日志文件,长期不清理会占用大量磁盘空间,增加磁盘I/O。
  • 建议: 配置自动清理策略,定期清理旧的二进制日志。
  • 操作步骤:
    1. 编辑MySQL配置文件 my.cnf,添加日志保留策略:
      [mysqld]
      expire_logs_days=7
      
    2. 重启MySQL服务以应用更改:
      sudo systemctl restart mysqld
      
    3. 手动清理老旧的二进制日志(如有必要):
      PURGE BINARY LOGS BEFORE 'YYYY-MM-DD HH:MM:SS';
      

5. 监控和优化慢查询

  • 背景: 慢查询可能会导致高I/O负载,尤其是涉及大量排序、临时表或不适当的索引使用时。
  • 建议: 开启慢查询日志,并优化涉及大量I/O操作的查询。
  • 操作步骤:
    1. 编辑MySQL配置文件 my.cnf,开启慢查询日志:
      [mysqld]
      slow_query_log=1
      slow_query_log_file=/var/log/mysql/slow.log
      long_query_time=1
      
    2. 重启MySQL服务以应用更改:
      sudo systemctl restart mysqld
      
    3. 定期检查慢查询日志并优化涉及的大量I/O的查询。

6. 调整磁盘I/O调度器

  • 背景: 操作系统的I/O调度器可以影响磁盘写入的效率。对于数据库服务器,可能需要调整I/O调度策略以获得更好的性能。
  • 建议: 将I/O调度器调整为 deadlinenoop,这在数据库负载下通常表现更好。
  • 操作步骤:
    1. 检查当前的I/O调度器:
      cat /sys/block/sdX/queue/scheduler
      
    2. 临时调整I/O调度器:
      echo deadline > /sys/block/sdX/queue/scheduler
      
    3. 永久调整:编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX 中添加:
      elevator=deadline
      
    4. 更新grub并重启系统:
      sudo update-grub
      sudo reboot
      

通过实施这些具体的优化建议,你应该能够显著降低MySQL对磁盘的写入负载,从而提升系统整体的性能和稳定性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++学习/复习补充记录 --- 图论(深搜,广搜)
  • uniapp使用tki-qrcode插件生成二维码,并且可以分享给微信好友
  • 千云物流 -低代码平台MySQL在linux安装
  • 深入理解计算机系统阅读笔记-第三章
  • 【NLP自然语言处理】文本处理的基本方法
  • stm32的内部时钟源 | RC震荡电路
  • h5适配iOS——window.open失效
  • win10使用系统自带照片查看器的步骤
  • 电路笔记(信号) : 一个极简的DDS信号发生器
  • 巨魔商店2安装教程,支持最新iOS 17.0的所有型号
  • camera: TypeError: Cannot read properties of undefined reading ‘getUserMedia
  • linux 权限解读
  • 【云计算】什么是云计算服务|为什么出现了云计算|云计算的服务模式
  • 【算法每日一练及解题思路】判断数字是否为偶数
  • 成为一名厉害的黑客,必须知道的12个步骤,黑客入门
  • CSS实用技巧干货
  • ES10 特性的完整指南
  • Invalidate和postInvalidate的区别
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • React+TypeScript入门
  • SpringBoot 实战 (三) | 配置文件详解
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 类orAPI - 收藏集 - 掘金
  • 聊聊redis的数据结构的应用
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端面试总结(at, md)
  • 让你的分享飞起来——极光推出社会化分享组件
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • ###C语言程序设计-----C语言学习(6)#
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (不用互三)AI绘画工具应该如何选择
  • (分享)自己整理的一些简单awk实用语句
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)库存超卖案例实战——优化redis分布式锁
  • (原创)可支持最大高度的NestedScrollView
  • (转)项目管理杂谈-我所期望的新人
  • .bat文件调用java类的main方法
  • .naturalWidth 和naturalHeight属性,
  • .Net - 类的介绍
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [1204 寻找子串位置] 解题报告
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [BJDCTF2020]EzPHP1