记一次关于innodb_data_file_path设置导致启动Mysql时报错
概述
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合适的大小。
后面小编会分享更多工作中碰到的问题,感兴趣的朋友走一波关注哩~
相关推荐
CoderToy 2020-11-16
emmm00 2020-11-17
王艺强 2020-11-17
ribavnu 2020-11-16
bianruifeng 2020-11-16
wangshuangbao 2020-11-13
苏康申 2020-11-13
vivenwan 2020-11-13
moyekongling 2020-11-13
云中舞步 2020-11-12
要啥自行车一把梭 2020-11-12
aydh 2020-11-12
kuwoyinlehe 2020-11-12
minerk 2020-11-12
vitasfly 2020-11-12
jazywoo在路上 2020-11-11
敏敏张 2020-11-11
世樹 2020-11-11