相关疑难解决方法(0)

`ERROR 1114 (HY000) the table ... is full` innodb_file_per_table 设置为 autoextend

我有一个 MySQL 数据库,其中包含大量数据(100-200GB - 一堆科学测量值)。绝大多数数据存储在一张表中Sample。现在我正在创建数据库的从属副本,我想innodb_file_per_table在此过程中利用它的优势。所以我设置innodb_file_per_table了我的从属配置并导入了数据库的转储。令我惊讶的是,它失败了

第 5602 行的 ERROR 1114 (HY000):表 'Sample' 已满

该文件Sample.ibd目前约为 93GB,分区上有超过 600GB 的可用空间,因此这不是磁盘可用空间问题。它似乎没有达到任何类型的文件系统限制(我使用的是 ext4)。

对于可能是什么原因或要调查什么的任何想法,我将不胜感激。


更新:我正在使用mysql Ver 14.14 Distrib 5.1.66, for debian-linux-gnu (x86_64).

SELECT @@datadir; -- returns `/home/var/lib/mysql/`
SHOW VARIABLES LIKE '%innodb_data_file_path%'; -- ibdata1:10M:autoextend 

df -h /home/var/lib/mysql/
768G   31G  699G   5% /home
Run Code Online (Sandbox Code Playgroud)

mysql innodb mysql-5.1

27
推荐指数
1
解决办法
8万
查看次数

表上的 MySQL 索引创建失败已满

更新:tl;dr:问题是 MySQLTMPDIR在创建索引时使用。而我TMPDIR的磁盘空间不足。

原问题:

我正在尝试向 InnoDB 表添加索引,并获得table is full error. 我有足够的磁盘空间,并且 MySQL 配置有一个 file-per-table=1。表数据为 85GB,我假设索引将在 20GB - 30GB 左右,而且我的磁盘空间比这多得多。我也在使用 ext3,所以从操作系统的角度来看,我认为文件大小限制没有任何问题。

记录的错误如下所示:

140616 13:04:33  InnoDB: Error: Write to file (merge) failed at offset 3 1940914176.
InnoDB: 1048576 bytes should have been written, only 970752 were written.
InnoDB: Operating system error number 0.
InnoDB: Check that your OS and file system support files of this size.
InnoDB: Check also that the disk is not full or a …
Run Code Online (Sandbox Code Playgroud)

mysql innodb index

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

innodb ×2

mysql ×2

index ×1

mysql-5.1 ×1