首页 > 其他分享 >[ERROR] mariadbd: The table 'INNODB_BUFFER_PAGE' is full

[ERROR] mariadbd: The table 'INNODB_BUFFER_PAGE' is full

时间:2022-11-22 11:46:29浏览次数:41  
标签:tmp full BUFFER unsigned DEFAULT int INNODB table NULL

问题描述:将information_schema导出sql文件到新库中恢复,sql中的表都是临时表,存储引擎都是memory,在导入的过程中实际大量会占用临时表。

报错信息:ERROR 1114 (HY000) at line 2397 in file: 'HKUATZABBIXDB-2022-10-06_22-24-01-information_schema.sql': The table 'INNODB_BUFFER_PAGE' is full

环境:mariadb10.6.4

 

1.排查磁盘空间是否占满

2.查询数据文件增长是否受限制

MariaDB [test01]> show variables like '%innodb_data_file_path%';
+-----------------------+------------------------+
| Variable_name | Value |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:12M:autoextend |
+-----------------------+------------------------+

3.导入的都是临时表,查询临时表大小

MariaDB [(none)]> show variables like '%tmp%';
+----------------------------+----------------------+
| Variable_name              | Value                |
+----------------------------+----------------------+
| default_tmp_storage_engine |                      |
| encrypt_tmp_disk_tables    | OFF                  |
| encrypt_tmp_files          | OFF                  |
| innodb_tmpdir              |                      |
| max_tmp_tables             | 32                   |
| slave_load_tmpdir          | /tmp                 |
| tmp_disk_table_size        | 18446744073709551615 |
| tmp_memory_table_size      | 16777216             |
| tmp_table_size             | 16777216             |
| tmpdir                     | /tmp                 |
+----------------------------+----------------------+
10 rows in set (0.001 sec)

4.修改临时表大小,重启数据库,要导入的information_schema文件,所以临时表暂时调大

[mysqld]
tmp_table_size = 2048M
max_heap_table_size = 2048M

 

5.查看information_schema建表语句,使用临时表,存储引擎放在memory中。这种内存临时表在show tables时查询不到,但是可以被直接select看到,退出当前会话就会消失

DROP TABLE IF EXISTS `INNODB_BUFFER_PAGE`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TEMPORARY TABLE `INNODB_BUFFER_PAGE` (
  `POOL_ID` int(11) unsigned NOT NULL DEFAULT 0,
  `BLOCK_ID` bigint(21) unsigned NOT NULL DEFAULT 0,
  `SPACE` int(11) unsigned NOT NULL DEFAULT 0,
  `PAGE_NUMBER` int(11) unsigned NOT NULL DEFAULT 0,
  `PAGE_TYPE` varchar(64) DEFAULT NULL,
  `FLUSH_TYPE` int(11) unsigned NOT NULL DEFAULT 0,
  `FIX_COUNT` int(11) unsigned NOT NULL DEFAULT 0,
  `IS_HASHED` int(1) NOT NULL DEFAULT 0,
  `NEWEST_MODIFICATION` bigint(21) unsigned NOT NULL DEFAULT 0,
  `OLDEST_MODIFICATION` bigint(21) unsigned NOT NULL DEFAULT 0,
  `ACCESS_TIME` bigint(21) unsigned NOT NULL DEFAULT 0,
  `TABLE_NAME` varchar(1024) DEFAULT NULL,
  `INDEX_NAME` varchar(64) DEFAULT NULL,
  `NUMBER_RECORDS` bigint(21) unsigned NOT NULL DEFAULT 0,
  `DATA_SIZE` bigint(21) unsigned NOT NULL DEFAULT 0,
  `COMPRESSED_SIZE` bigint(21) unsigned NOT NULL DEFAULT 0,
  `PAGE_STATE` enum('NOT_USED','MEMORY','REMOVE_HASH','FILE_PAGE') NOT NULL,
  `IO_FIX` enum('IO_NONE','IO_READ','IO_WRITE','IO_PIN') NOT NULL,
  `IS_OLD` int(1) NOT NULL DEFAULT 0,
  `FREE_PAGE_CLOCK` bigint(21) unsigned NOT NULL DEFAULT 0
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3;

内存临时表和磁盘是临时表

-- 内存中的临时表:
create temporary table mytrans 
(
    itemnumber int,
    groupnumber int,
    branchnumber int
)engine = memory
;

-- 创建一个同样结构的临时表 就是普通的临时表 MySQL 会默认存储引擎是 innoDB
create temporary table mytran
(
    itemnumber int,
    groupnumber int,
    branchnumber int
);

 

结论

1.information_schema可以作为sql文件导入到新的数据库中,sql文件中的表都是以内存临时表的形式存在

2.内存临时表和磁盘临时表 show tables都查询不到,但是可以被select,退出当前会话,临时表就会释放

3.可以修改tmp_table_size、max_heap_table_size 来解决The table 'INNODB_BUFFER_PAGE' is full的问题

 

标签:tmp,full,BUFFER,unsigned,DEFAULT,int,INNODB,table,NULL
From: https://www.cnblogs.com/houzhiheng/p/16914585.html

相关文章

  • innodb中统计数据是如何收集的
    ​InnoDB统计数据如何查看    1.通过SHOWTABLESTATUS可以看到关于表的统计数据    2.通过SHOWINDEX可以看到关于索引的统计数据 InnoDB提供了两种存储统计数......
  • innodb中内存管理机制BufferPool
    ​内存结构 InnoDB主索引是聚簇索引,索引与数据共用表空间,对于InnoDB而言,数据就是索引,索引就是数据。InnoDB缓存机制和MyISAM缓存机制的最大区别就是在于,InnoDB不仅仅是缓存......
  • InnoDB体系结构及工作原理
    概念InnoDB主要包括了内存池、后台线程以及存储文件。INNODB的三大特性:插入缓存,两次写,自适应hash内存池又是由多个内存块组成的,主要包括BufferPool、redolog缓冲等,解决cpu......
  • original: Error: Unknown storage engine 'InnoDB'
    问题Nodejs工程下,用sequelize向一个现有的MySQL数据库中初始化数据时报错,如题:original:Error:Unknownstorageengine'InnoDB'ENVMySQL5.6Sequelize:^6......
  • mysql this is incompatible with sql_mode=only_full_group_by
    MySQL分组查询时报错mysqlthisisincompatiblewithsql_mode=only_full_group_bymysql5.7[mysqld]sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGIN......
  • Mysql数据库引擎MYISAM和INNODB详解
    一、数据库​​引擎​​数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程......
  • BufferedWriter
    BufferedWriter/**Copyright(c)1996,2013,Oracleand/oritsaffiliates.Allrightsreserved.*ORACLEPROPRIETARY/CONFIDENTIAL.Useissubjecttolicens......
  • js Blob 与 ArrayBuffer
    1/*2*Blob3*4*Blob(BinaryLargeObject)表示二进制类型的大对象,在数据库管理系统中,将二进制数据存储为一个单一个体的集合5*Blob通常是影像、......
  • MySQL8.0新特性—InnoDB增强
    1.自增变量持久化在MySQL8.0之前的版本中,自增列计数器置于内存中,并不会持久化到磁盘,当数据库重启后,会根据selectmax(id)+1fromxxx重新计算当前自增列值,这种现象在某些......
  • 网络通信 数据交互结构 Protobuffer
    消息头:消息唯一标识,用来区分当前网络请求的类型。登陆就做账号验证,聊天就做消息群发。一般使用数字表示,字符串比较耗内存。1byte范围为0~255,2byte范围为0~65535,消息头......