1. 调整InnoDB系统表空间的大小

介绍如何增大或减小InnoDB系统表空间的大小 。

1.1 增加InnoDB系统表空间大小

增加InnoDB系统空间最简单的方法就是,在配置文件中配置autoextend

每次自动扩展的增量大小由参数 innodb_autoextend_increment 控制,单位为’M’。

mysql> show variables like 'innodb_autoextend_increment';
+-----------------------------+-------+
| Variable_name | Value |
+-----------------------------+-------+
| innodb_autoextend_increment | 64 |
+-----------------------------+-------+

innodb_autoextend_increment 设置不会影响 每个表的单独表空间文件常规表空间文件。无论innodb_autoextend_increment设置如何,这些文件都是自动扩展的 。初始扩展是少量的,之后以4MB的增量扩展。

设置自动扩展示例

innodb_data_file_path = ibdata1:1G:autoextend

增加数据文件扩展系统表空间

1. 关闭MySQL服务器

  1. 如果最后一个数据文件上有关键字autoextend,请根据实际大小将其改成固定大小。

  2. 添加新数据文件到末尾,可以选择使用自动扩展。但是只能将最后一个数据文件指定为自动扩展。

    如下面错误示例

innodb_data_file_path = ibdata1:1G:autoextend;ibdata2:10M:autoextend

 查看log-error日志
2018-08-09T06:22:11.781320Z 0 [ERROR] InnoDB: syntax error in file path or size specified is less than 1 megabyte
2018-08-09T06:22:11.781352Z 0 [ERROR] InnoDB: Unable to parse innodb_data_file_path=ibdata1:1G:autoextend;ibdata2:10M:autoextend
2018-08-09T06:22:11.781357Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2018-08-09T06:22:11.781361Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-08-09T06:22:11.781364Z 0 [ERROR] Failed to initialize builtin plugins.
2018-08-09T06:22:11.781367Z 0 [ERROR] Aborting

正确示例

innodb_data_file_path = ibdata1:1G;ibdata2:10M:autoextend
  1. 再次启动MySQL服务器
 2018-08-09T06:28:37.355696Z 0 [Note] InnoDB: Need to create a new innodb_system data file 'ibdata2'.
2018-08-09T06:28:37.355778Z 0 [Note] InnoDB: Setting file './ibdata2' size to 10 MB. Physically writing the file full; Please wait ...
2018-08-09T06:28:37.491906Z 0 [Note] InnoDB: File './ibdata2' size is now 10 MB.

 mysql> show variables like 'innodb_data_%';
+-----------------------+-----------------------------------+
| Variable_name | Value |
+-----------------------+-----------------------------------+
| innodb_data_file_path | ibdata1:1G;ibdata2:10M:autoextend |
| innodb_data_home_dir | |
+-----------------------+-----------------------------------+

【注意】:添加新数据文件时,请确保文件名不引用现有文件。否则InnoDB重新启动服务器时创建并初始化文件。

1.2 减小InnoDB系统表空间大小

无法从系统表空间中删除数据文件。要减小系统表空间大小,请使用以下过程:

  • 1)使用mysqldump转储所有 InnoDB表,包括位于mysql schema 中的InnoDB表
 mysql> SELECT TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mysql' and ENGINE='InnoDB';
+---------------------------+
| TABLE_NAME |
+---------------------------+
| engine_cost |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| plugin |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
+---------------------------+
19 rows in set (0.00 sec)
  • 2)停止服务器

  • 3)删除所有现有的表空间文件(*.ibd),包括ibdata和ib_log文件。不要忘记删除位于mysql schema中的表的*.ibd文件。

  • 4)删除InnoDB表的所有.frm文件 。

  • 5)配置新的表空间

  • 6)重启服务器

  • 7)导入转储文件。

    注意

    如果数据库仅使用InnoDB引擎,则dump所有数据库,停止服务器,删除所有数据库和InnoDB日志文件,重新启动服务器以及导入dump文件可能更简单。

最新文章

  1. Hadoop相关日常操作
  2. sqlite字段属性删除方法
  3. Javascript 处理时间大全
  4. Server.mappath用法
  5. transform scale
  6. 多级联动导航栏(top导航)
  7. linux下 yum源、rpm、源代码安装mysql
  8. 为dedecms v5.7的ckeditor添加jwplayer插件
  9. 函数buf_LRU_search_and_free_block
  10. poj 2771 最大独立集
  11. ASP.NET 企业组织机构代码验证
  12. Django performance
  13. C++ 11 学习1:类型自动推导 auto和decltype
  14. dom节点相关问题
  15. Memcached技术
  16. 零拷贝sendfile解析
  17. Ucinet6 + Netdraw 根据excel文件绘制网络拓扑图
  18. java过滤器filter使用
  19. TED #08# Learn to read Chinese ... with ease!
  20. TCP/IP网络知识点总结

热门文章

  1. hdoj5003【wa水】
  2. gcc降版本方法 - [学习]
  3. luogu P1095守望者的逃离【dp】By cellur925
  4. python之url编码
  5. 洛谷 P3935 Calculating
  6. webkit滤镜
  7. P1720 月落乌啼算钱
  8. AJPFX关于Set接口学习笔记及总结
  9. (3)《Head First HTML与CSS》学习笔记---CSS入门
  10. android控件之webview和js与java交互