后台由云端某服务返回异常触发。由于最近没有更改服务代码,之前运行正常,所以先去服务所在服务器查看服务状态:[root@manager-01~]#systemctlstatusJul2717:51:09manager-01节点[14705]:{错误:ENOSPC:设备上没有剩余空间,写入错误号:-28,代码:'ENOSPC',系统调用:'write'}7月27日17:51:11manager-01节点[14705]:{错误:ENOSPC:设备上没有剩余空间,写入错误号:-28,代码:'ENOSPC',系统调用:'write'}7月27日17:51:21manager-01节点[14705]:{Error:ENOSPC:nospaceleftondevice,writeerrno:-28,code:'ENOSPC',syscall:'write'}可以发现报错信息很明确:空间不足,无法写入备注:OSversion:CentOS7location首先查看当前服务器空间使用情况:[root@manager-01~]#df-hFilesystemSizeUsedAvailUse%Mountedon/dev/vda140G38G0100%/devtmpfs1.9G01.9G0%/devtmpfs1.9G01.9G0%/dev/shmtmpfs1.9G384K1.9G1%/runtmpfs1.9G01.9G0%/sys/fs/cgroup/dev/mapper/vg00-data100G33M100G1%/datatmpfs380M0380M0%/run/user/1000发现根目录/没有可用空间。查看哪个目录空间使用最多,一步步查看:[root@manager-01/]#sudodu-s-h/*|sort-nr798M/home384K/run372M/app143M/boot59M/etc40K/tmp35G/var26M/root16K/lost+found4.0K/srv4.0K/opt4.0K/mnt4.0K/media1.7G/usr...可以找到/var目录使用了35G,占空间的87.5%。按照上面的方法逐步查看,最后发现:[root@manager-01mysql]#du-s-h。/*|sort-nr1004K./mysql212K./performance_schema92K./Alerts_DB28G./ibdata116K./aria_log.000000015.0M./ib_logfile15.0M./ib_logfile04.0K./test4.0K./aria_log_control0ock./mysql.s一个非常大的文件ibdata1在/lib/mysql目录下找到一个28G的文件。百度下这个文件内容是什么:ibdata1文件是InnoDB存储引擎的共享表空间文件。该文件主要存放以下数据:数据字典doublewritebufferinsertbuffer/changebufferrollbacksegmentsundospaceForeignkeyconstraintsystemtables参考链接:https://mp.weixin.qq.com/s/KD2qLrmWY80yFxUtxJVNMA解决方法既然mysql的共享表空间是位于如果是因为空间文件增加导致系统空间耗尽,那就寻找解决办法。摸索的过程就是百度各种方案,然后虚拟机模拟运行。这里给出一个直接的解决方案:1、修改共享表空间,因为每张表独立空间的方案网上有很多案例。下面是我自己参考数据库版本的操作过程:[t3mgr@manager-01~]$mysql--versionmysqlVer15.1Distrib5.5.65-MariaDB,forLinux(x86_64)usingreadline5.1我使用的是mariadb5.5.65版本来stopmyownbusiness防止过程中的数据操作(我的服务基本不可用,所以没有影响,请根据自己的实际情况判断)systemctlstopbackupdatabase(fulldatabase)[root@manager/]#mysqldump-uroot-p--all-databases--add-drop-table>/data/db_backup.sql为参数,实际操作请输入对应的密码/data/db_backup.sql作为备份文件名,根据实际情况找一个足够大的空间放置(一定要大于原mysql目录占用的空间)。如果备份内容较大,可能需要一定的时间,请耐心等待...修改mysql(mariadb)的配置文件,一般为/etc/my.cnf,在[mysqld]下添加如下配置innodb_file_per_table=1]验证修改是否生效。首先配置mysql(mariadb)启动[root@manager/]#systemctlrestartmariadb然后进入mysql视图执行命令查看变量:showvariableslike'%per_table%';#mysql-uroot-pmysql>showvariableslike'%per_table%';+--------------------+--------+|变量名|值|+----------------------+--------+|innodb_file_per_table|ON|+--------------------+--------+1rowinset(0.00sec)如果相应的值为ON,这意味着原始数据库文件已成功修改。在/var/lib/mysql目录下执行如下命令[root@manager-01mysql]#rm-rfibdata1[root@manager-01mysql]#rm-rfib_logfile*[root@manager-01mysql]#rm-rfrestorethedatabaseforyourowndatabasename[root@daik-manager/]#mysql-uroot-p