1.问题描述
最近在对一个超过1g的数据做update时,执行语句后,发现过了很久会报错:
2003 - Can’t connect to MySQL server on ‘localhost’(10061)
同时数据并没有实现修改。看了很多关于2003错误的文章,都没有解决问题。最后我通过查错误日志排查了问题,发现是由于mysql数据库的innodb buffer pool的相关参数设置错误导致的。
2.查找错误日志
2.1 重启服务
当出现这个错误的时候,Mysql服务已经关闭了。这时需要重启服务。这里不同系统的操作方法不同,就不再赘述。
2.2 查找错误日志的文件位置和文件名
首先查看自己的Mysql数据库的数据存储的物理地址
在Mysql客户端中完成操作:
mysql> show global variables like “%datadir%”;
找到上述地址后,在客户端内完成操作:
mysql> show variables like “log_error”;
这样能找到错误日志的文件名
在第一步获得的目录下找到后缀名为err的文件,可以用文本编辑器打开,找到最近的关键字为[ERROR]的记录,就可以大概看到最近的错误详细信息了。
另外关于如何更改Mysql的数据库物理地址,可以参考这篇:
查看及更改MySQL数据库物理文件存放的位置
这样可以释放一些C盘的空间
注意,在未修改过Data文件夹路径的情况下,在Data文件夹下同目录有my.ini。这个文件是记录Mysql各种运行参数的,后面的修改也会用到它。
2.3 定位错误信息及解决
我发现我的错误信息和这篇文章说的一样
[ERROR] [FATAL] InnoDB: Over 95 percent of the buffer pool is occupied by lock heaps or the adaptive
于是顺藤摸瓜,查了如何修改my.ini下的参数
mysql中如何配置innodb buffer pool的大小
注意:我在我的my.ini中编辑时,发现一开始是有innodb_buffer_pool_instances和innodb_buffer_pool_size的,但是没有
innodb_buffer_pool_chunk_size,所以我是在原来基础上做的修改。注意在文件内搜索一下再做更改,防止添加重复语句。
3.修改完成
修改完my.ini的参数后,需要再重启mysql的服务,这里可自行查询操作方法。之后我再做update语句,发现终于成功啦~