当我们要写入新数据而发生“The table is full”告警错误时,先不要着急,按照下面的思路来逐步分析即可:

1、查看操作系统以及MySQL的错误日志文件

确认操作系统的文件系统没有报错,并且MySQL的错误日志文件中是否有一些最直观的可见的错误提示。

有可能是数据库文件超过操作系统层的文件大小限制,比如fat/fat32以及低版本的Linux,文件最大不可以大于2G(最大扩展到4G),这就需要转换fat32为NTFS,或升级Linux版本。

2、确认磁盘空间没有满

执行 df -h 查看剩余磁盘空间,如果发现磁盘空间确实已经用完,则尽快删除不需要的文件。

如果通过 du 计算各个目录的总和却发现根本不会用完磁盘空间时,就需要注意了,可能是某个被删除的文件还没完全释放,导致 df 看起来已经用完,但 du 却又统计不到。

这时候可以执行 lsof | grep -i deleted 找到被删除的大文件,将其对应的进程杀掉,释放该文件描述符。

如果该进程不能被杀掉,例如是 mysqld 进程在占用的话,可以在 MySQL 里找到是哪个内部线程在用,停止该线程即可。

曾经发生过这样一个例子:

用vim打开MySQL的slow query log,退出时选择了 “wq” 指令,也就是保存退出,结果悲剧发生了。

因为在其打开的那段时间内,slow query log有新日志产生,会持续写入,但他退出时采用保存退出的方式,变成了一个“新”文件(或者说新文件句柄 file handler),这个“新”文件无法被mysqld进程识别,

mysqld进程依旧将slow query log写入到原来它打开的那个文件(或者说文件句柄)里,该日志文件在持续增长,但手工保存退出的文件却再也不增长了,直接查看文件看不出任何异常。

这时候只能用 lsof -p `pidof mysqld` 才能看到该文件。

解决方法很简单,将原来的文件备份一下,执行下面的指令:

FLUSH SLOW LOGS;

备注:MySQL 5.5开始才支持 BINARY/ENGINE/ERROR/GENERAL/RELAY/SLOW 等关键字,之前的版本只能刷新全部日志。

3、确认数据表状态

如果是MyISAM引擎

默认配置下,MyISAM引擎最大可支持256TB(myisam_data_pointer_size = 6,256^6 = 256TB),除非操作系统层有限制。

在MySQL5.0中,MyISAM引擎行记录默认是动态长度,单表最大可达256TB,MyISAM行指针(myisam_data_pointer_size)长度为6字节。

在这之前,MyISAM行指针默认长度为4字节,只支持4GB的数据。改行指针最大值可设为8字节。

在行指针设置较小不够用的时候,为提高MyISAM表最大容量,可以修改表定义设定MAX_ROWS的值:ALTER TABLE `xx` ENGINE=MyISAM MAX_ROWS=nn

备注:表定义中,AVG_ROW_LENGTH 属性定义的是 BLOB/TEXT 字段类型的最大长度。

如果是InnoDB引擎

ibdata*共享表空间最后一个文件没有设置成自增长,或者超过32位系统的单文件大小限制。

解决方法:

1、ibdata*的最后一个文件(非最后一个文件无法设置为自动增长)设置成自动增长;

2、检查操作系统,迁移到64位操作系统下;

3、转成独立表空间;

4、删除历史数据,重整表空间;

如果是MEMORY引擎

1、适当提高max_heap_table_size设置(注意该值是会话级别,不要设置过大,例如1GB,一般不建议超过256MB);

2、执行ALTER TABLE t_mem ENGINE=MEMORY; 重整表空间,否则无法写入新数据;

3、删除部分历史数据或者直接清空,重整表空间;

4、设置 big_tables = 1,将所有临时表存储在磁盘,而非内存中,缺点是如果某个SQL执行时需要用到临时表,则性能会差很多;

顺便说下,如果数据表有一列自增INT做主键,但是该ID值达到了INT最大值的话,MyISAM、MEMORY、InnoDB三种引擎的告警信息是不一样的。

InnoDB引擎的告警信息类似这样:

ERROR 1467 (HY000): Failed to read auto-increment value from storage engine

而MyISAM和MEMORY引擎则都是这样:

ERROR 1062 (23000): Duplicate entry ’4294967295′ for key ‘PRIMARY’

参考

觉得文章有用?立即:

和朋友一起 共学习 共进步!

猜想失败,您看看下面的文章有用吗?

mysql 表ful,你所不知的table is full那些事相关推荐

  1. MySQL还能这样玩---第一篇之你所不知道的命令

    MySQL还能这样玩---第一篇之你所不知道的命令 命令篇 DDL---表定义相关命令操作 show create table 表名 ---查看创建表的SQL语句 alter table 表名 mod ...

  2. MySql清空表的方法介绍 : truncate table 表名

    清空某个mysql表中所有内容 delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate tabl ...

  3. 解决(springboot项目)mysql表名大写,造成jpa Table doesn‘t exist问题

    解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题 参考文章: (1)解决(springboot项目)mysql表名大写,造成jpa Table ...

  4. MySQL表碎片化(Table Fragmentation)以及处理

    关于MySQL中表碎片化(Table Fragmentation)产生的原因: 简单总结一下,MySQL Engine不同,碎片化的原因可能也有所差别.这里没有深入理解.分析这些差别.此文仅以Inno ...

  5. mysql.servers表存在_ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist

    MySQL版本:mysql5.7.21 修改用户权限,刷新权限表,报1146 mysql> flush privileges; ERROR 1146 (42S02): Table 'mysql. ...

  6. Mysql You can‘t specify target table ‘表名‘ for update in FROM clause错误解决方案

    Mysql You can't specify target table '表名' for update in FROM clause错误解决方案 测试表结构及测试数据 1. 更新 code 开始以 ...

  7. mysql表被锁住/表打不开 Waiting for table metadata lock

    mysql表被锁住/表打不开 Waiting for table metadata lock 执行命令: SHOW PROCESSLIST; 如果发现State 字段是:Waiting for tab ...

  8. 重启服务器后mysql表损坏 Incorrect key file for table ‘.\axxxx.MYI‘; try to repair it“,“tourl“:““,.....

    重启系统后mysql表损坏 Incorrect key file for table '.\axxxx.MYI'; try to repair it","tourl":& ...

  9. 系统调优,你所不知道的TIME_WAIT和CLOSE_WAIT

    https://my.oschina.net/fdhay/blog/638631 高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT 2016-02-18 大房 大房说 本文是我将最 ...

最新文章

  1. cisco+路由器+固定外网IP与NAT+设置
  2. 5G 行业专网 — 公有云上的 5G 专网
  3. java 枚举高级应用_【后端】java基础(5.6)java高级基础之枚举
  4. 用php求n个分数的和,php关于数组n个随机数分成x组,使每组值相近的算法
  5. web加减乘除法c#_C#的加减乘除的问题
  6. gensim读取已训练模型LDA模型的模型与dictionary
  7. 深度学习2.0-25.Train-Val-Test划分检测过拟合(交叉验证)
  8. hashmap扩容机制 jdk1.7
  9. websocket实时聊天(一)
  10. 案例:Java多态实现饮料购买咖啡、可乐、矿泉水
  11. face++ 行驶证OCR识别
  12. 安装mysql忘了初始密码咋办_mysql安装忘记初始密码怎么办
  13. 用api提取ip的优点
  14. 三体归零者和盘龙鸿蒙,《三体》里归零者那么厉害,为什么不能逆转降维打击?...
  15. 图像处理——简单浮雕效果和倒影效果实战
  16. 谷歌adwords教程_区块链技术作为Google AdWords中的安全剧院
  17. 安卓手机管理_彻底解决安卓手机通知管理难题,顺便还实现了聊天消息防撤回!?
  18. 随机的UserAgent对付某反爬虫网站
  19. idea完美激活 转载
  20. 导线中电流分布和集肤深度

热门文章

  1. Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现
  2. 基于zbus的MySQL透明代理(100行)
  3. WinSCP实现Ubuntu与 Windows 文件共享方法
  4. Oracle11.2.0.4 windows32+64bit opatch工具 11.2.0.0 百度云盘下载
  5. 查询指定目录下的文件中是否包含指定字符串
  6. 您不能在64-位可执行文件上设置DEP属性?
  7. 新RSS reader
  8. 迅雷Chrome插件引发的Uncaught ReferenceError: xl_chrome_menu is not defined JS报错
  9. Linux下的文件系统与目录系统简介
  10. 机器学习解决什么问题_机器学习帮助解决水危机