昨天下午生产系统突然无法保存销售提单了,而且是全面爆发,所有用户都无法保存销售类单据了。事情比较紧急,所以公司的运维部门的电话很快就被打爆了。
我们马上检查了数据库服务器和应用服务器的网络状况及内存,cpu使用状况等等,发现这些都正常,于是我们又检查了数据库的文件大小及磁盘空间是否够用,日志
文件增长情况等等,也毫无头绪。
在这个时候我们想起在前几天从线上取了一个完整备份库恢复到了测试服务器上,并搭建了一个测试环境,测试时发现库存单据也无法进行保存。当时由于测试服
务器空间有限,急需将测试库的数据清理一部分,所以我们就将所有数据量比较大的表列出来了,并首先将库存单据明细表和主表给清除了一部分数据,然后测试系统
中的库存单据又可以保存了。
于是我们初步断定应该和数据库文件的空间大小有关系,经过查看系统日志发现日志果然存在错误信息,数据库日志自动增长时,分配日志空间失败。我们现在的
日志文件已经有80G了,数据库日志文件增长为每次增长10%,并且不限制大小。于是我们的DBA尝试将按照比例增长改为每次固定增长512MB,结果这次系统分配日志
文件空间就可以成功了。
这样销售单据也可以重新保存,所以业务操作都ok了。可是为什么按照比例增长日志空间就会失败,而按照固定的大小增长就没有问题呢,我们排除了磁盘坏道,
空间不足,网络传输失败,IO瓶颈等等原因,一直无法给出合理的解答。求助基础架构的同事也没有结果,百度和google也没有找到合理的解释。
但是由于日志文件自动增长分配空间失败引起的后果的确是非常的严重,让我们切实感受到了数据库维护的重要性。