首页 > 数据库 >如何选择配置 MySQL innodb_log_file_size

如何选择配置 MySQL innodb_log_file_size

时间:2024-05-04 13:56:50浏览次数:10  
标签:log InnoDB file innodb 日志 size

配置 InnoDB 的 redo 空间大小是写密集型工作负载最重要的配置选项之一。不过,这需要权衡利弊。配置的 redo 空间越大,InnoDB 就能更好地优化写 IO。不过,增加 redo 空间也意味着在系统断电或因其他原因崩溃时需要更长的恢复时间。

 

对于特定的 innodb_log_file_size 值,要预测系统崩溃恢复所需的时间既不容易也不直接--这取决于硬件、MySQL 版本和工作负载。差异可能很大(视具体情况而定,相差 10 倍或更多)。不过,每 1GB innodb_log_file_size大约需要 5 分钟是一个合适的粗略数字。如果这对你的环境真的很重要,建议在满负荷情况下(数据库完全预热后)通过模拟系统崩溃来测试。

 

虽然恢复时间可以作为 InnoDB 日志文件大小限制的指导原则,但你还可以通过其他一些方法来查看这个值--尤其是在安装了 PMM的情况下。

 

查看 PMM的 "MySQL InnoDB Metrics" 控制面板。如果你看到这样的图表

如果“Uncheckpointed Bytes”非常接近 "Max Checkpoint Age",那么几乎可以肯定当前的 innodb_log_file_size 限制了系统的性能。增大innodb_log_file_size可以显著提高性能。

 

如果看到的是这样的内容:

“Uncheckpointed Bytes”数远低于“Max Checkpoint Age”,那么增加日志文件大小不会有明显改善。

 

注意:许多 MySQL 设置是相互关联的。对于较小的 innodb_buffer_pool_size 而言,特定的日志文件大小可能足够大,但对于较大的 InnoDB Buffer Poo 值而言,可能需要更大的日志文件才能获得最佳性能。

 

还有一点要记住:之前提到的恢复时间实际上取决于 Unchepointed Bytes,而不是日志文件的总大小。如果你没有发现恢复时间随着 innodb_log_file_size 的增大而增加,请查看"InnoDB Checkpoint Age “图--可能只是你的工作负载和配置无法充分利用大型日志文件。

 

另一种查看日志文件大小的方法是查看日志空间使用情况:

此图显示了每小时写入 InnoDB 日志文件的数据量以及 InnoDB 日志文件的总大小。在上图中,我们有 2GB 的日志空间,每小时写入日志文件的数据约为 12GB。这意味着我们每十分钟就要循环处理一次日志。

 

InnoDB 必须在每个日志文件周期内至少刷新一次缓冲池中的每个脏页面。

 

如果刷新频率较低,InnoDB 的性能会更好,对 SSD 设备的磨损也会更小。我希望刷新时间不少于 15 分钟,一小时更好。

 

手动估算,可以使用以下脚本估算一下:

#!/bin/bash

USER="root"
PASS="root"

# Use command substitution to assign the output to a variable
a=$(mysql -u$USER -p$PASS -e"show engine innodb status\G" | grep "Log sequence number" | awk '{print $4}')
# The semicolon is not necessary when you move to a new line
mysql -u$USER -p$PASS -e"select sleep(60);"

b=$(mysql -u$USER -p$PASS -e"show engine innodb status\G" | grep "Log sequence number" | awk '{print $4}')
# Make sure to use the correct minus sign and not a dash character. Also, enclose the arithmetic operation inside $(( ))
mysql -u$USER -p$PASS -e"SELECT ((${b} - ${a}))*60/1024/1024 AS MB_Per_Hour;"

 

标签:log,InnoDB,file,innodb,日志,size
From: https://www.cnblogs.com/abclife/p/18158432

相关文章

  • Catalog
    Problem(P):P2508[HAOI2008]圆上的整点https://www.cnblogs.com/mfc007/p/17643618.htmlUVA1073GlenbowMuseumhttps://www.cnblogs.com/mfc007/p/17643619.html(S1)最小斯坦纳树https://www.cnblogs.com/mfc007/p/17643622.htmlUVA11400LightingSystemDesignhttps......
  • SystemVerilog -- 3.0 SystemVerilog Loops
    SystemVerilogLoopsWhatareloops?loop是一段不断执行的代码。条件语句通常包含在循环中,以便在条件变为真时终止。如果loop永远运行,那么模拟将无限期挂起。下表给出了SystemVerilog中不同类型的循环构造。\\foreverRunsthegivensetofstatementsforever......
  • SystemVerilog -- 2.21 Data Types ~ SystemVerilog typedef and alias
    SystemVerilogtypedefandaliasTypedef在复杂的测试平台中,某些变量声明可能具有更长的数据类型规范,后者需要在测试平台的多个位置使用。在这种情况下,我们可以使用a为现有数据类型提供用户定义的名称。然后,可以在整个代码中使用新的数据类型,因此如果需要,无需在多个位置进行编......
  • SystemVerilog -- 2.20 Data Types ~ SystemVerilog Structure
    SystemVerilogStructureStructure可以包含不同数据类型的元素,这些元素可以作为一个整体引用,也可以通过其名称单独引用。这些元素具有相同数据类型的数组完全不同。//Normalarrays->acollectionofvariablesofsamedatatypeintarray[10];//allelements......
  • SystemVerilog -- 2.8 Data Types ~ SystemVerilog Array Manipulation
    SystemVerilogArrayManipulationSystemVerilog中有许多内置方法,可帮助数组搜索和排序。数组操作方法只需循环访问数组元素,每个元素都用于计算子句指定的表达式。迭代器参数指定一个局部变量,该变量可在表达式中用于引用迭代中的当前元素。如果未提供参数,item是默认使用的名称......
  • pycnblog的使用
    功能一键拖拽上传默认“未发布”,可选择直接发布重复上传,提示是否更新博客环境python3是需要python环境的,python的安装自己去百度一下pycnblog的使用[email protected]:dongfanger/pycnblog.gitpipinstallpyyaml注意博客园6.21更新,MetaWeblog现在不支持密......
  • HPA* (Near Optimal hierarchical Path-finding) —— 外网的讲解blog
    原地址:https://alexene.dev/2019/06/02/Hierarchical-pathfinding.html讲解视频:https://www.youtube.com/watch?v=qSbSb8vMbLI目标问题:为不同的分割区建立door,也就是两个分割器有两个相邻的小格,这两个小格子是可以联通的,下图中指的是在黄色线两侧的相邻的两个蓝色小格......
  • Makefile
    编译工具及构建工具介绍在之前的课程中,都是直接使用gcc对代码进行编译,这对简单的工程是可以的,但当我们遇到复杂的工程时,每次用gcc等编译工具去操作就会显得很低效。因此make工具就出现了,make的出现是为了解决手动编译和链接大型工程的问题,它可以避免重复的工作,提高效率,保证正确......
  • SystemVerilog -- 2.6 Data Types ~ SystemVerilog Dynamic Arrays
    SystemVerilogDynamicArraysDynamicArrays是一个unpackedArrays,其大小可以在运行时设置或更改。因此与静态数组完全不同,静态数组的大小是在数组声明期间预先确定的。DynamicArrays的默认大小为零,直到由构造函数设置。new()SyntaxDynamicArray的尺寸由空方括号指定。[][d......
  • simpread-课程 27:系统日志之 ILogger 与 Log4Net
    一、ILogger介绍1.1简介ILogger是.NET框架提供的一个接口,用于统一不同日志库的调用方式。ILogger本身并不提供具体的日志记录功能,而是通过实现它的类来执行这些操作。所以我们可以借助第三方日志库或自定义实现ILoggerProvider,将日志消息写入到文件、控制台或数据库中,也......