Code Bye

MySQL运行中删除error.log重建后没有数据写入

MySQL运行中发现error.log文件达到140G,观察了一段时间每秒都有信息写入文件,删除error.log重建后,再观察却没有数据写入,这是为何?
解决方案

10

客户端程序在退出之前没有调用mysql_close()。
客户端已经休眠的秒数比参数wait_timeout 或 interactive_timeout 多并且没有向服务器发出任何请求。
在数据传输过程中,客户端程序突然结束。
max_allowed_packet 的变量值太小或查询需要比已分配的 mysqld 更多的内存。
假如你的sleep进程数在同一时间内过多,再加上其他状态的连接,总数超过了max_connection的值,那mysql除了root用户外,就无法再继续处理任何请求无法与任何请求建立连接或直接down了。所以,这个问题在大负载的情况下还是相当严重的。假如发现你的mysql有很多死连接存在,首先要先检查你的程序能否使用的是pconnect的方式,其次,检查在页面执行完毕前能否及时调用了mysql_close()。
还有一个办法,你可以在my.cnf里面加上wait_timeout和interactive_timeout,把他们的值设的小一些,默认情况下wait_timeout的值是8小时的时间,你可以改成1个小时,或半个小时。这样mysql会更快的杀死死连接。防止连接总数超过max_connection的值。或把max_connection的值设置的更大,不过这样显然不妥,连接的数量越多,对你服务器的压力越大。实际上那些连接都是冗余的,把它们尽快杀死才是上策。

15

句柄的问题,你用>error.log就没有问题,你先建的文件和之前的虽然路径不一样,但是只有在启动的时候mysql才会去打开这个文件。

15

运行中清空被占用的文件,最好用tuncate 命令(不是mysql命令,是系统命令)或echo “”>这样清空文件,这样不会改变文件的node。运行中直接删除文件,空间也不会释放,即使数据有回写,重启之后,也没了。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明MySQL运行中删除error.log重建后没有数据写入