Tomcat启动报错 ( No space left on device)

本文解决了一个关于分库查询中只能查询到第一个分库的问题,原因是数据库临时分区tmp空间不足。通过修改my.cnf配置文件中的tmpdir路径,并创建及授权新目录,成功解决了数据库重启错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题起因

分库查询中只能查询到,第一个分库,后续分库查询不到,查看日志,发现如下错误信息

错误信息

Caused by: java.sql.SQLException: Can't change size of file (OS errno 28 - No space left on device)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.15.jar:8.0.15]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.15.jar:8.0.15]
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.15.jar:8.0.15]
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:970) ~[mysql-connector-java-8.0.15.jar:8.0.15]
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1020) ~[mysql-connector-java-8.0.15.jar:8.0.15]
	at com.mysql.cj.jdbc.DatabaseMetaDataUsingInfoSchema.executeMetadataQuery(DatabaseMetaDataUsingInfoSchema.java:70) ~[mysql-connector-java-8.0.15.jar:8.0.15]
	at com.mysql.cj.jdbc.DatabaseMetaDataUsingInfoSchema.getTables(DatabaseMetaDataUsingInfoSchema.java:847) ~[mysql-connector-java-8.0.15.jar:8.0.15]

问题原因

数据库临时分区tmp空间不足

参考https://stackoverflow.com/questions/7415710/mysql-writing-file-error-errcode-28

my.cnf中如果没有配置tmpdir的路径,默认使用/tmp;

修改my.cnf 中tmpdir = /alidata1/dbtmpdir

目录磁盘空间查看

# 查看目录已用空间 df -PhT /
#处理前

已用100%
#处理后
[root@toku01 alidata1]# df -PhT /
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/vda1      ext4   20G  3.0G   16G  16% /

 

解决步骤

# 创建目录
mkdir /alidata1/dbtmpdir

#修改my.cnf配置文件 ,增加配置:tmpdir=/alidata1/dbtmpdir

vim my.cnf

#需要给新建目录授权,不然重启会失败
chmod 777 /alidata1/dbtmpdir

#重新启动

#linux centos 7 重启命令
systemctl restart  mysqld.service

#linux  centos6 重启命令
service mariadb restart

#重启启动tomcat 解决问题

 

如果数据库重启错误,查看数据库日志文件,就可以知道问题原因,然后针对性去处理


tail -n8 mysqld.log
2020-05-18T04:52:25.504543Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15-5)  Percona Server (GPL), Release 5, Revision f8a9e99.
mysqld: Can't create/write to file '/alidata1/dbTempDir/ibiZvIlt' (OS errno 13 - Permission denied)
2020-05-18T04:52:26.900951Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15-5) starting as process 17025
2020-05-18T04:52:27.012324Z 1 [ERROR] [MY-012576] [InnoDB] Unable to create temporary file; errno: 13
2020-05-18T04:52:27.012354Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
2020-05-18T04:52:27.012395Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2020-05-18T04:52:27.012655Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2020-05-18T04:52:27.012810Z 0 [ERROR] [MY-010119] [Server] Aborting

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值