您的位置 首页 golang

innodb_data_file_path设置–通过错误日志中page大小计算实际值

概述

innodb_data_file_path用来指定innodb tablespace文件,如果我们不在my.cnf文件中指定innodb_data_home_dir和innodb_data_file_path那么默认会在datadir目录下创建ibdata1 作为innodb tablespace。5.6.6之后 两个参数的默认值如下:

show variables like 'innodb_data%';
 


场景:

在测试环境下没有设置过多的详细参数就初始化并启动了服务,后期优化的过程中发现innodb_data_file_path设置过小并改正。


问题发现过程:

一般my.cnf文件中,默认配置为 表空间 有四个文件组成:ibdata1、ibdata2、ibdata3、ibdata4,每个文件的大小为10M,当每个文件都满了的时候,ibdata4会自动扩展。

innodb_data_file_path = ibdata1:10M:autoextend
 

发现该文件已经扩大到了76M:

root@iZmfgnjkehk13uZ:/usr/local/mysql/data# du -sh ibdata1 
76M ibdata1
 

修改my.cnf为

innodb_data_file_path=ibdata1:12M;ibdata2:512M:autoextend
 

重启mysql报错,无法启动,查看日志

cat iZmfgnjkehk13uZ.err 
 

报错如下:


解决:

从日志可以看到./ibdata1′ is of a different size 4864 pages代表mysql文件page大小为4864(64pages相当于1M)

计算实际大小:

4864/64=76M

修改/etc/my.cnf配置为

innodb_data_file_path=ibdata1:76M;ibdata2:512M:autoextend
 

启动mysql,成功!


上面讲的是之前工作中不小心设置错innodb_data_file_path的值导致数据库启动不来,通过报错日志中pages的大小来计算并设置innodb_data_file_path合适的大小。

后面小编会分享更多工作中碰到的问题,感兴趣的朋友走一波关注哩~

文章来源:智云一二三科技

文章标题:innodb_data_file_path设置–通过错误日志中page大小计算实际值

文章地址:https://www.zhihuclub.com/100577.shtml

关于作者: 智云科技

热门文章

网站地图