核心文件记录的状态和内存映像的运行过程。因为缓冲池驻留在内存,运行的进程的内存映像倾倒的核心文件,系统与大型缓冲池时,可以产生大的核心文件mysqld死亡的过程。
大核心文件可以有问题的原因包括时间写他们,他们消耗大量的磁盘空间,与传输大文件相关的挑战。
为了减少核心文件大小,您可以禁用innodb_buffer_pool_in_core_file
变量来省略缓冲池页面从核心转储。的innodb_buffer_pool_in_core_file
介绍了变量在MySQL 8.0.14和默认情况下是启用的。
不包括缓冲池页面从安全的角度也可能是可取的如果你有担忧倾销数据库页面核心文件可以共享你的内部或外部组织用于调试目的。
对数据的访问存在于缓冲池页面时mysqld在一些调试场景过程死亡可能是有益的。如果在怀疑是否包含或排除缓冲池页面,请参考MySQL支持。
禁用innodb_buffer_pool_in_core_file
只有在生效core_file
变量是启用和操作系统支持MADV_DONTDUMP
posix扩展madvise ()系统调用,这是支持Linux 3.4及以后。的MADV_DONTDUMP
扩展导致页面在指定范围内被排除在核心转储。
如果操作系统支持MADV_DONTDUMP
扩展,启动服务器——核心文件
和——innodb-buffer-pool-in-core-file =了
没有缓冲池页面的选项来生成核心文件。
$ > mysqld——核心文件innodb-buffer-pool-in-core-file =
的core_file
变量默认是只读和残疾人。它是通过指定启用——核心文件
在启动时选项。的innodb_buffer_pool_in_core_file
变量是动态的。它可以指定在启动或配置在运行时使用集
声明。
mysql >设置全球innodb_buffer_pool_in_core_file =;
如果innodb_buffer_pool_in_core_file
变量是禁用的,但MADV_DONTDUMP
不支持的操作系统,还是一个madvise ()
发生故障时,警告是MySQL服务器错误日志和写的core_file
变量是残疾预防写作核心文件,无意中包括缓冲池页面。如果只读core_file
变量变得残疾,必须重新启动服务器再次启用它。
下面的表显示了配置和MADV_DONTDUMP
支持场景,确定核心文件生成以及他们是否包括缓冲池页面。
表15.4核心文件配置场景
core_file 变量 |
innodb_buffer_pool_in_core_file 变量 |
MADV_DONTDUMP madvise()的支持 | 结果 |
---|---|---|---|
(默认) | 不相关的结果 | 不相关的结果 | 不生成核心文件 |
在 | (默认) | 不相关的结果 | 与缓冲池页面生成核心文件 |
在 | 从 | 是的 | 没有缓冲池页面生成核心文件 |
在 | 从 | 没有 | 核心文件没有生成,core_file 被禁用,并警告写入服务器错误日志吗 |
减少核心文件大小通过禁用innodb_buffer_pool_in_core_file
变量取决于缓冲池的大小,但也受到了影响InnoDB
页面大小。一个较小的页面大小意味着更多的页面所需的相同数量的数据,和更多的页面意味着更多的页面元数据。下表提供了破碎的例子,你可能会看到一个1 gb的缓冲池使用不同的页面大小。
表15.5核心文件大小与缓冲池页面包含和排除
innodb_page_size 设置 |
缓冲池页面包括(innodb_buffer_pool_in_core_file =对 ) |
缓冲池页面排除(innodb_buffer_pool_in_core_file =了 ) |
---|---|---|
4 kb | 2.1 gb | 0.9 gb |
64 kb | 1.7 gb | 0.7 gb |