zoukankan      html  css  js  c++  java
  • 1. 调整InnoDB系统表空间的大小

    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文件可能更简单。

  • 相关阅读:
    android面试之怎么把图片变成圆形
    android面试之contentProvider获取联系人
    Android面试之assets和aw文件的使用
    Android设计模式之面试
    Activity、Window、View的关系
    ViewPager的简单用法
    补间动画
    帧动画
    android系统的样式和主题
    C++的三种继承方式简述
  • 原文地址:https://www.cnblogs.com/wanbin/p/9514651.html
Copyright © 2011-2022 走看看